Mit der Volltextsuche (Full-Text Search, FTS) 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 Wörter wie „der“ ignoriert und verschiedene Formen eines Worts abgeglichen, z. B. „laufen“, „läuft“ oder „lief“.
AlloyDB for PostgreSQL unterstützt alle Funktionen und Möglichkeiten der Volltextsuche. Neben der Unterstützung für GIN- und GiST-Indexe bietet AlloyDB auch die RUM-Erweiterung für die leistungsstarke Volltextsuche in PostgreSQL 17 oder niedriger und das Relevanzranking Best Matching 25 (BM25) in PostgreSQL 17 oder höher.
Grundlegende Konzepte der Volltextsuche
Wenn Sie die Volltextsuche effektiv implementieren möchten, 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 Worts) mit der Zeile zu verknüpfen.
Dieser Prozess umfasst eine Vorverarbeitungs-Pipeline, die Rohtext in ein durchsuchbares Format umwandelt. Dazu wird Folgendes 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 Verwendung der 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 – als sortierte Liste eindeutiger Lexeme.tsquery: Stellt Suchbegriffe dar, einschließlich boolescher Operatoren, mit denen Sie Lexeme kombinieren können.@@: Prüft, ob eintsvectormit einertsqueryübereinstimmt, und ermöglicht so sprachlich bewusste Suchen.
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 das Relevanzranking.
Sie können auch zwischen den folgenden Optionen wählen, um die Suchrelevanz und ‑genauigkeit zu optimieren:
- RUM-Index:Verbessert Standard-GIN-Indexe, indem Positionsinformationen direkt im Index gespeichert werden. So können Sie schnellere Wortgruppensuchen und Relevanzrankings 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 Termhäufigkeit und der Längensättigung zu ranken. So wird eine branchenübliche Genauigkeit beim Abgleich von Suchbegriffen erreicht. Diese Erweiterung wird in PostgreSQL 17 oder höher unterstützt. Weitere Informationen finden Sie unter BM25-Index erstellen und verwalten.
Volltext- und semantische Suche kombinieren
Die leistungsstärksten Suchimplementierungen kombinieren häufig die Volltextsuche mit RUM-Indexen und die Vektorsuche. Verwenden Sie die Hybridsuche, um die Vorteile des semantischen Verständnisses und des genauen Abgleichs von Suchbegriffen zu kombinieren und die unterschiedlichen Ergebnismengen für ein umfassendes Ranking zusammenzuführen.
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 Suchanfrage eines Nutzers finden, z. B. „bequeme Schuhe für das Langstreckentraining“. Die Datenbank führt dann die gerankten Ergebnisse aus beiden Suchkomponenten mit dem Algorithmus Reciprocal Rank Fusion (RRF) zu einer einzigen, einheitlichen Liste zusammen, um ein endgültiges Ranking zu erstellen.
Weitere Informationen zur Verwendung dieses Hybridansatzes finden Sie unter Hybride Vektorsuche nach Ähnlichkeiten.
Nächste Schritte
- RUM- Index erstellen und verwalten
- BM25- Index erstellen und verwalten
- Hybride Vektor suche nach Ähnlichkeiten ausführen