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 + Positionentsquery— 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'); -- TRUEEine 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
- Verkettung: || und CONCAT
- UPPER, LOWER, SUBSTRING, REPLACE
- TRIM, LPAD, RPAD
- Einführung in die Volltextsuche (tsvector, to_tsquery)