Volltextsuche (engl. Full-Text Search) durchsucht den kompletten Inhalt von Dokumenten nach Wörtern oder Phrasen — nicht nur Titel oder Metadaten. Das Herzstück ist ein invertierter Index, der für jedes Wort die Liste der Dokumente speichert, in denen es vorkommt.
So funktioniert sie
Beim Indexieren werden Texte tokenisiert (in Wörter zerlegt) und normalisiert: Stoppwörter fallen weg, Wortformen werden auf ihren Stamm reduziert (Stemming). Der Index ist also vorberechnet — eine Volltextsuche ist damit deutlich schneller als ein sequenzielles LIKE '%wort%', das jedes Dokument einzeln durchliest.
Ranking
Die Trefferliste wird nach Relevanz sortiert. Übliche Verfahren sind TF-IDF und BM25, die berücksichtigen, wie oft ein Wort vorkommt und wie selten es im gesamten Bestand ist.
Beispiele
- MySQL/MariaDB: FULLTEXT-Index mit
MATCH ... AGAINST(siehe MySQL-Befehle) - PostgreSQL:
tsvector/tsquerymit GIN-Index (siehe PostgreSQL-Befehle) - Elasticsearch/Lucene: BM25 als Standard-Ranker (siehe Elasticsearch-Befehle)
- SQLite: FTS5-Modul
Die Volltextsuche ist der lexikalische Baustein des Information Retrieval. Wer sie mit Vektorsuche kombiniert, landet bei der Hybridsuche — PostgreSQL bietet dafür pgvector.