0Pricing
SQL Academy · Lektion

Einführung in die Volltextsuche (tsvector, to_tsquery)

Indizieren Sie Dokumente mit tsvector, führen Sie natürlichsprachliche Abfragen mit to_tsquery aus und ordnen Sie Ergebnisse mit ts_rank.

Einführung in die Volltextsuche (tsvector, to_tsquery) ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Volltextsuche?

LIKE/ILIKE findet Teilzeichenketten. Die Volltextsuche versteht Wörter: Stammformen, Stoppwörter, Sprachregeln und Relevanz-Rangfolge. Sie ist in PostgreSQL integriert — keine Erweiterung erforderlich.

Zwei grundlegende Typen

Die Volltextsuche basiert auf zwei Typen:

  • tsvector — ein analysiertes Dokument: Lexeme + Positionen
  • tsquery — eine analysierte Abfrage: Lexeme + boolesche Operatoren

Sie vergleichen sie mit dem Operator @@.

Ein Dokument analysieren

Rohtext in einen tsvector umwandeln:

SELECT to_tsvector('english', 'The quick brown foxes jump over the lazy dogs');
-- 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
-- Stop words ('the', 'over') dropped; words stemmed (foxes → fox)

Eine Abfrage analysieren

Und die Sucheingabe:

SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'

Abgleichen

Verwenden Sie @@ für die Prüfung:

SELECT to_tsvector('english', 'The lazy fox')
        @@ to_tsquery('english', 'fox');    -- TRUE

Eine Dokumenttabelle indizieren

Fügen Sie eine tsvector-Spalte und einen GIN-Index für schnelle Abfragen hinzu:

CREATE TABLE articles (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body  TEXT NOT NULL
);

-- Either keep a generated tsvector column:
ALTER TABLE articles
  ADD COLUMN search_doc tsvector
    GENERATED ALWAYS AS (
      to_tsvector('english',
        coalesce(title,'') || ' ' || coalesce(body,'')
      )
    ) STORED;

CREATE INDEX articles_search_idx ON articles USING GIN (search_doc);

Suchen

Mit dem Index sind Abfragen schnell:

SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;

Boolesche Operatoren in Abfragen

tsquery unterstützt & (AND), | (OR), ! (NOT) und Gruppierungen:

to_tsquery('english', '(cat | dog) & !rabbit');

Suche nach Wortfolgen

Verwenden Sie <-> für benachbarte Wörter:

to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'

Benutzerfreundliche Webabfragen: websearch_to_tsquery

Google-ähnliche Abfragen akzeptieren:

SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');

Ergebnisse bewerten

Bewerten Sie Ergebnisse mit ts_rank oder ts_rank_cd:

SELECT id, title,
       ts_rank(search_doc, query) AS rank
FROM articles, to_tsquery('english', 'postgres & json') AS query
WHERE search_doc @@ query
ORDER BY rank DESC
LIMIT 20;

Hervorheben

Gefundene Ausschnitte anzeigen:

SELECT ts_headline('english', body,
  to_tsquery('english', 'postgres & json'),
  'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');

Zusammenfassung

Die Volltextsuche ist in PostgreSQL integriert.

  • tsvector + tsquery + @@
  • GIN-Index für hohe Geschwindigkeit
  • websearch_to_tsquery für Benutzereingaben
  • ts_rank zum Sortieren nach Relevanz

Kurzer Test

Welcher Operator vergleicht einen tsvector mit einer tsquery?

Häufig gestellte Fragen

Ist die Lektion „Einführung in die Volltextsuche (tsvector, to_tsquery)“ kostenlos?

Ja — der vollständige Text von „Einführung in die Volltextsuche (tsvector, to_tsquery)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Einführung in die Volltextsuche (tsvector, to_tsquery)“?

Indizieren Sie Dokumente mit tsvector, führen Sie natürlichsprachliche Abfragen mit to_tsquery aus und ordnen Sie Ergebnisse mit ts_rank. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Einführung in die Volltextsuche (tsvector, to_tsquery)“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Verkettung: || und CONCAT
  2. UPPER, LOWER, SUBSTRING, REPLACE
  3. TRIM, LPAD, RPAD
  4. Einführung in die Volltextsuche (tsvector, to_tsquery)
← Zurück zu SQL Academy