Volltextsuche – Übersicht

Wählen Sie eine Dokumentenversion aus:

Mit der Volltextsuche 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 Omni unterstützt alle Funktionen und Möglichkeiten der Volltextsuche, einschließlich der Unterstützung für GIN- und GiST-Indexe.

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 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“ 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, 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 Omni unterstützt alle Indexarten 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.

Weitere Informationen zum Erstellen und Verwenden von RUM-Indexen in AlloyDB Omni finden Sie unter RUM-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 des genauen Abgleichs von Suchbegriffen zu nutzen 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 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 ein endgültiges Ranking zu erstellen.

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

Nächste Schritte