Volltextsuche – Übersicht

Wählen Sie eine Dokumentationsversion aus:

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 Standard-Stringabgleich, da er linguistische Nuancen berücksichtigt, z. B. das Ignorieren gängiger Wörter wie „der“ und das Abgleichen verschiedener Formen eines Wortes wie „laufen“, „laufend“ oder „gelaufen“.

AlloyDB Omni unterstützt alle Funktionen und Möglichkeiten der Volltextsuche, einschließlich der Unterstützung von GIN- und GiST-Indexen.

Um die Volltextsuche (FTS) 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 Vorverarbeitungspipeline, die Rohtext in ein suchbares Format umwandelt. Dazu werden folgende Schritte ausgeführt:

  • Text in Tokens aufteilen.
  • Häufige Stoppwörter entfernen.
  • Wörter auf ihre Stammform normalisieren, z. B. ist „laufen“ das Lexem für „laufen“, „läuft“, „laufend“ und „lief“.

Für die Volltextsuche müssen Sie sich auch mit speziellen Datentypen, Operatoren und verschiedenen Indexierungsstrategien vertraut machen, einschließlich integrierter PostgreSQL-Indexe und leistungsstarker RUM-Indexe.

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

  • tsvector: Stellt ein Dokument in einem suchbaren Format dar – als sortierte Liste eindeutiger Lexeme.
  • tsquery: Suchbegriffe, einschließlich boolescher Operatoren, mit denen Sie Lexeme kombinieren können.
  • @@: Prüft, ob ein tsvector mit einem tsquery übereinstimmt, und ermöglicht so linguistisch bewusste Suchen.

AlloyDB Omni unterstützt alle Indextypen für die Volltextsuche, die auch von integriertem PostgreSQL unterstützt werden. Die Wahl des Index hängt von der Abwägung zwischen Suchgeschwindigkeit, Indexerstellungszeit, Aktualisierungsgeschwindigkeit und den erforderlichen Suchfunktionen ab, z. B. Phrasensuche oder Relevanzranking.

Weitere Informationen zum Erstellen und Verwenden von RUM-Indexen in AlloyDB Omni finden Sie unter RUM-Index in AlloyDB for PostgreSQL erstellen und verwalten.

Die leistungsstärksten Suchimplementierungen kombinieren oft die Volltextsuche mit RUM-Indizes und die Vektorsuche. Mit der Hybridsuche können Sie die Stärken des semantischen Verständnisses und des genauen Keyword-Abgleichs kombinieren und die unterschiedlichen Ergebnissätze für ein umfassendes Ranking zusammenführen.

In einer E-Commerce-Anwendung können Sie beispielsweise zuerst die Volltextsuche mit RUM verwenden, um Produkte mit bestimmten Keywords wie „Laufschuhe“ zu finden, und dann die Vektorsuche verwenden, um Ergebnisse basierend auf der semantischen Ähnlichkeit mit einer detaillierteren Abfrage eines Nutzers zu finden, z. B. „bequeme Schuhe für Langstreckentraining“. Die Datenbank führt dann die sortierten Ergebnisse aus beiden Suchkomponenten mithilfe des RRF-Algorithmus (Reciprocal Rank Fusion) zu einer einzigen, einheitlichen Liste zusammen, um ein endgültiges Ranking zu erstellen.

Nächste Schritte