Volltextsuche – Übersicht

Auf dieser Seite wird beschrieben, was die Volltextsuche ist und wie sie funktioniert.

Mit der Volltextsuche können Sie eine Anwendung erstellen, mit der in einer Tabelle nach Wörtern, Wortgruppen oder Zahlen gesucht werden kann, anstatt nur nach genauen Übereinstimmungen in strukturierten Feldern. Bei Volltextsuchen werden die neuesten transaktionskonsistenten Commits an Ihre Anwendung zurückgegeben. Die Volltextsuchfunktionen von Spanner umfassen auch die Rechtschreibkorrektur, die automatische Spracherkennung von Suchanfragen und das Ranking von Suchergebnissen. Bei der Textsuche in Spanner wird automatisch auch nach ähnlichen Wörtern gesucht.

Sie müssen einen Suchindex für alle Spalten erstellen, die für Volltextsuchen verfügbar sein sollen. Spanner analysiert die Daten in diesen Spalten, um einzelne Wörter zu identifizieren, die dem Suchindex hinzugefügt werden sollen. Spanner aktualisiert den Suchindex mit neuen oder geänderten Daten, sobald diese in der Datenbank übernommen werden.

  • Einfache Textsuche: Bei dieser Suche werden Inhalte anhand eines vollständigen oder teilweisen Wortes oder einer Wortgruppe gesucht, um zuverlässige Ergebnisse zu erhalten. Beispiel für Abfrageprädikate:
    • Übereinstimmung mit allen Wörtern [glatthaar foxterrier dreifarbig]
    • Genau passende Wörter oder Wortgruppen ["Rat Terrier"]
    • Eines dieser Wörter [miniature OR standard]
    • Wort in unmittelbarer Nähe [world AROUND(3) cup]
    • Teilstring [start*]
  • Numerische Suche: Führt numerische Gleichheits- und Ungleichheitssuchen durch. Bei Gleichheitssuchen wird nach einer Zahl gesucht. Bei Bereichs- und Ungleichheitssuchen wird eine Zahl innerhalb eines bestimmten Bereichs gefunden.
  • N-Gramm-basierte Suche: Es wird nach Wörtern mit Rechtschreibvarianten gesucht, einschließlich Eigennamen. Diese Art der Suche trägt auch dazu bei, Suchanfragetext mit falsch geschriebenen Namen, Namen mit alternativen Schreibweisen und Text mit anderen Rechtschreibvarianten abzugleichen.
  • Soundex-Suchanfragen: Es wird nach ähnlich klingenden Wörtern gesucht.

Funktionen der Volltextsuche

Die Spanner-Volltextsuche bietet die folgenden Funktionen:

  • Sortierte Suchergebnisse: Berechnet eine Punktzahl, um zu messen, wie gut eine Anfrage mit einem Dokument übereinstimmt (z. B. durch eine höhere Gewichtung für „column_A“). Mit SQL-Ausdrücken können Sie das Ranking anpassen.
  • Snippets: Hebt den übereinstimmenden Text im Suchergebnis hervor.
  • Globale Unterstützung: Die Tokenisierung wird automatisch in verschiedenen Sprachen unterstützt, einschließlich der CJK-Segmentierung. Durch die manuelle Angabe der Sprache können Sie zusätzliche Feinabstimmungen vornehmen.
  • Governance: Findet jedes Vorkommen bestimmter Wörter.
  • Rechtschreibkorrektur: Falsch geschriebene Wörter in Anfragen werden automatisch korrigiert, damit sie mit dem korrekt geschriebenen Wort im Speicher übereinstimmen. Wenn der Nutzer beispielsweise nach „girafe“ sucht, werden Dokumente mit „giraffe“ gefunden.
  • Kontextbezogene Synonyme hinzufügen, einschließlich Stoppwörter: Kontextbezogene Synonyme werden automatisch hinzugefügt, um die Erinnerung zu erhöhen. Beispiel: „das Haus“ entspricht „dieses Haus“ und „Katzenbild“ entspricht „Kätzchenbild“.
  • Kontextbezogene Übersetzung von Zahlen in Text und umgekehrt: Die Textversion einer Zahl wird mit der numerischen Darstellung abgeglichen und umgekehrt. Beispiel: „fünf Katzen“ stimmt mit „5 Katzen“ überein.
  • Automatische Pluralbildung: „cat“ wird mit „cats“ abgeglichen.

Konzepte der Volltextsuche

Die Volltextsuche umfasst die folgenden wichtigen Konzepte:

  • Ein Dokument bezieht sich auf die durchsuchbaren Daten in einer bestimmten Zeile.
  • Ein Token bezieht sich auf jedes Wort eines Dokuments, das in einem Suchindex gespeichert ist.
  • Bei der Tokenisierung wird ein Dokument in Tokens unterteilt.
  • Ein Tokenizer ist eine SQL-Funktion, die für die Tokenisierung verwendet wird.
  • In einem umgekehrten Index werden Tokens gespeichert. Mit SQL-Abfragen den invertierten Index durchsuchen

Um die Volltextsuche zu verstehen, sehen wir uns eine Anwendung an, in der in einer Datenbank Songs für jeden Sänger gespeichert werden. Jede Zeile steht für einen einzelnen Song. Jeder Song enthält Spalten wie Titel, Liedtext, Sänger und Album. Die Anwendung verwendet die Volltextsuche, damit Nutzer mit Suchanfragen in natürlicher Sprache nach einem Song suchen können:

  • Die Suche unterstützt Abfragen, die den Operator OR verwenden, z. B. Prince OR Camille. Anwendungen können die Endnutzereingabe aus dem Suchfeld direkt in die SQL-Funktion SEARCH (mit der rquery-Syntax) einfügen. Weitere Informationen finden Sie unter Suchindex abfragen.
  • Spanner verwendet Suchindexe, um in verschiedenen Feldern nach übereinstimmenden Dokumenten zu suchen. Eine Anwendung kann beispielsweise eine Anfrage ausgeben, um nach dem Titel „cry“ zu suchen, mit „so cold“ im Liedtext und „Prince“ als Sänger.

Weitere Verwendungsmöglichkeiten für Suchindexe

Suchindizes haben neben der Volltextsuche eine Vielzahl von Verwendungsmöglichkeiten, z. B.:

  • Elemente in Arrayspalten indexieren Stellen Sie sich eine Anwendung vor, in der eine Array-Spalte zum Speichern von Tags verwendet wird, die einem Element zugeordnet sind. Mithilfe von Suchindexen kann die Anwendung effizient nach Zeilen mit einem bestimmten Tag suchen. Weitere Informationen finden Sie unter Array-Tokenisierung.

  • Daten finden, die sich im Schnittpunkt einer Reihe von Abfragebedingungen befinden. Sie können beispielsweise eine beliebige Gruppe von Attributen (Farbe, Größe, Marke, Bewertung usw.) verwenden, um in einem Katalog nach einem Produkt zu suchen.

  • Numerische Suchbedingungen allein oder in Kombination mit Volltextbedingungen verwenden. Hier einige Beispiele dafür, wann ein Suchindex für numerische Suchanfragen nützlich ist:

    • In Kombination mit einer Volltextanwendung Beispiel: Sie möchten eine E‑Mail mit dem Betreff Bild und einer Größe von mehr als 1 MB finden.
    • Wenn sie Teil einer zuvor beschriebenen Schnittmenge von Bedingungen ist. Beispiel: Sie möchten Produkte finden, bei denen color = "yellow" AND size = 14 AND rating >= 4.5.
    • Wenn Sie nach der Überschneidung von numerischen Spalten suchen. Angenommen, in einer Tabelle werden Start- und Endzeiten von Ereignissen gespeichert. Mit Suchindexen lässt sich eine Abfrage, die nach Ereignissen sucht, die zu einem bestimmten Zeitpunkt stattgefunden haben, effizient implementieren: start_time <= @p AND end_time > @p.

    Weitere Informationen finden Sie unter Numerische Indexe.

Schritte für die Volltextsuche

Für die Volltextsuche in Spanner sind die folgenden Schritte erforderlich:

  1. Tokenisieren Sie ein Dokument mit den Spanner-Tokenizer-Funktionen, z. B. TOKENIZE_SUBSTRING. Weitere Informationen finden Sie unter Tokenisierung.
  2. Erstellen Sie mit der DDL-Anweisung CREATE SEARCH INDEX einen Suchindex für die Tokens. Weitere Informationen finden Sie unter Suchindexe.
  3. Dokumente im Suchindex mit der Spanner-Funktion SEARCH abfragen Weitere Informationen finden Sie unter Übersicht über Abfragen.
  4. Die Ergebnisse der Abfrage mit der Spanner-Funktion SCORE einstufen. Weitere Informationen finden Sie unter Suchergebnisse einstufen.

Beschränkungen

Preise

Für die Verwendung der Volltextsuche fallen in Spanner keine zusätzlichen Gebühren an. Die Implementierung der Volltextsuche führt jedoch zu höheren Kosten, da zusätzliche Rechen- und Speicherressourcen erforderlich sind.

Weitere Informationen finden Sie unter Spanner-Preise.

Nächste Schritte