Volltextsuche – Übersicht

Mit der Volltextsuche in AlloyDB for PostgreSQL können Sie Dokumente in natürlicher Sprache identifizieren, die einer Abfrage entsprechen. Dieser Ansatz ist effektiver als der Standardabgleich von Strings, da er sprachliche Nuancen berücksichtigt. So werden beispielsweise häufig verwendete Stoppwörter wie „der“ ignoriert und verschiedene Formen eines Wortes wie „laufen“, „läuft“ oder „lief“ abgeglichen.

Neben den Standard-GIN- und GiST-Indexen von PostgreSQL bietet AlloyDB die Erweiterung rum für die leistungsstarke Volltextsuche in PostgreSQL 17 und früher sowie die Relevanzbewertung Best Matching 25 (BM25) in PostgreSQL 17 und höher.

Um die Volltextsuche effektiv zu implementieren, sollten Sie wissen, wie PostgreSQL Text verarbeitet und durchsucht. Die Sucheinheit, ein Dokument, ist in der Regel eine Textspalte oder eine Kombination von Spalten aus einer Zeile. Beim Erstellen des Index wird dieses Dokument geparst, um Wörter (oder Lexeme, die Grundform eines Wortes) mit der Zeile zu verknüpfen.

Dieser Prozess umfasst eine Vorverarbeitungs-Pipeline, die Rohtext in ein durchsuchbares Format umwandelt. Dazu werden folgende Schritte ausgeführt:

  • Text in Tokens aufteilen
  • Häufig verwendete Stoppwörter entfernen
  • Wörter auf ihre Grundform normalisieren. „laufen“ ist beispielsweise das Lexem für „laufen“, „läuft“, „laufend“ und „lief“.

Für die Volltextsuche müssen Sie auch spezielle Datentypen, Operatoren und verschiedene Indexierungsstrategien kennen, einschließlich der integrierten PostgreSQL Indexe und der leistungsstarken RUM Indexe.

PostgreSQL verwendet zwei primäre Datentypen und einen Abgleichoperator, um die Volltextsuche zu verwalten:

  • tsvector: Stellt ein Dokument in einem durchsuchbaren Format dar, nämlich als sortierte Liste eindeutiger Lexeme.
  • tsquery: Stellt Suchbegriffe dar, einschließlich boolescher Operatoren, mit denen Sie Lexeme kombinieren können.
  • @@: Prüft, ob ein tsvector mit einem tsquery übereinstimmt, und ermöglicht so sprachlich bewusste Suchvorgänge.

AlloyDB unterstützt alle Indextypen für die Volltextsuche, die von der integrierten PostgreSQL-Funktion unterstützt werden. Die Wahl des Index hängt vom Gleichgewicht zwischen Suchgeschwindigkeit, Indexerstellungszeit, Aktualisierungsgeschwindigkeit und den spezifischen Suchfunktionen ab, die erforderlich sind, z. B. die Suche nach Wortgruppen oder die Relevanzbewertung.

Um die Suchrelevanz und ‑genauigkeit zu optimieren, können Sie auch zwischen den folgenden Optionen wählen:

  • RUM-Index:Verbessert Standard-GIN-Indexe, indem Positionsinformationen direkt im Index gespeichert werden. So können Sie schnellere Suchen nach Wortgruppen und Relevanzbewertungen durchführen, ohne auf die Tabellendaten zuzugreifen. Diese Erweiterung wird in PostgreSQL 17 oder niedriger unterstützt. Weitere Informationen finden Sie unter RUM-Index erstellen und verwalten.
  • BM25-Index:Implementiert den probabilistischen Algorithmus Best Matching 25, um Dokumente basierend auf der Termfrequenz und der Längensättigung zu bewerten. So wird eine branchenübliche Genauigkeit bei den Keyword-Optionen erreicht. Diese Erweiterung wird in PostgreSQL 17 oder höher unterstützt. Weitere Informationen finden Sie unter BM25-Index erstellen und verwalten.

Bei den leistungsstärksten Suchimplementierungen werden häufig die Volltextsuche mit RUM-Indexen und die Vektorsuche kombiniert. Verwenden Sie die Hybridsuche, um die Vorteile des semantischen Verständnisses und der genauen Keyword-Optionen zu nutzen. Die unterschiedlichen Ergebnismengen werden zusammengeführt, um eine umfassende Bewertung zu ermöglichen.

In einer E‑Commerce-Anwendung können Sie beispielsweise zuerst die Volltextsuche mit RUM verwenden, um Produkte zu finden, die bestimmte Suchbegriffe wie „Laufschuhe“ enthalten. Mit der Vektorsuche können Sie dann Ergebnisse basierend auf der semantischen Ähnlichkeit mit einer detaillierteren Abfrage eines Nutzers finden, z. B. „bequeme Schuhe für das Langstreckentraining“. Die Datenbank führt dann die bewerteten Ergebnisse aus beiden Suchkomponenten mit dem Algorithmus Reciprocal Rank Fusion (RRF) zu einer einzigen, einheitlichen Liste zusammen, um eine endgültige Bewertung zu erstellen.

Weitere Informationen zur Verwendung dieses Hybridansatzes finden Sie unter Hybride Suche nach Vektorähnlichkeiten ausführen.

Nächste Schritte