EMZETT.
Login

Elasticsearch und Volltextsuche: Wie Suchmaschinen arbeiten

Kurz: Eine Volltextsuche findet Wörter in großen Textmengen schnell, indem sie vorab einen Index anlegt, der zu jedem Wort die Fundstellen kennt.

Genauer: Mit LIKE '%wort%' in SQL müsste die Datenbank jeden Text durchsuchen, was bei vielen Daten langsam ist und keine Relevanz kennt. Suchsysteme wie Elasticsearch, OpenSearch, Meilisearch oder Apache Solr (alle auf Lucene oder ähnlichen Verfahren) bauen einen invertierten Index und liefern Treffer nach Relevanz sortiert.

Im Detail

Der invertierte Index

Wie das Stichwortverzeichnis eines Buches: Zu jedem Wort steht, in welchen Dokumenten und an welchen Stellen es vorkommt.

"katze"  -> Dokument 1, 7, 12
"hund"   -> Dokument 2, 7

Eine Suche nach „katze hund“ schneidet oder vereinigt diese Listen sehr schnell.

Analyse des Textes

Vor dem Indexieren wird Text analysiert: in Wörter zerlegt (Tokenisierung), in Kleinbuchstaben gewandelt, Satzzeichen entfernt, Stoppwörter (der, die, und) ausgelassen und Wörter auf ihren Wortstamm zurückgeführt („Häuser“ → „haus“). Sprachspezifische Analysatoren für Deutsch berücksichtigen Umlaute und zusammengesetzte Wörter. Dieselbe Analyse läuft auf der Suchanfrage.

Relevanz und weitere Funktionen

Treffer werden bewertet, klassisch mit TF-IDF und BM25: Ein Wort, das im Dokument oft, insgesamt aber selten vorkommt, zählt stark. Weitere Funktionen: Tippfehlertoleranz (Fuzzy-Suche mit Levenshtein-Abstand), Autovervollständigung, Hervorhebung, Facetten (Filter nach Kategorie), Geo-Suche und zunehmend Vektorsuche (semantische Ähnlichkeit über Embeddings).

Einsatz und Betrieb

Typisch ist ein Zusatzsystem neben der Hauptdatenbank: Daten werden dorthin kopiert (Synchronisation), Suchen laufen auf dem Index. Elasticsearch ist verteilt (Shards und Replikate) und eignet sich auch für Logs (ELK-Stack: Elasticsearch, Logstash, Kibana). Beachte: Der Index ist nicht die Quelle der Wahrheit und kann kurz hinterherhinken. Für kleine Anwendungen genügt oft die eingebaute Volltextsuche von PostgreSQL (tsvector) oder SQLite (FTS5).

Siehe auch: Vektordatenbanken und Ähnlichkeitssuche, SQL-Index, RAG