Teilstring-Suche ausführen

Zusätzlich zum vollständigen Tokenabgleich Indexe suchen Teilstring-Suchanfragen unterstützen. Auf dieser Seite wird beschrieben, wie Sie einen Teilstring ausführen. im Rahmen einer Volltextsuche in Spanner.

Übersicht

Teilstring-Suchanfragen haben folgende Eigenschaften:

  • Groß-/Kleinschreibung wird nicht berücksichtigt, die meisten Satzzeichen werden verworfen und Leerzeichen normalisiert.
  • Keine Segmentierung für Chinesisch, Japanisch und Koreanisch (CJK), da teilweise CJK-Suchanfragen häufig falsch segmentiert werden.
  • Bei mehreren Suchbegriffen muss das Ergebnis einen Teilstring von jedem dieser Begriffe enthalten. Beispielsweise stimmt 'happ momen' mit "happy moment" überein, da beide Teilstrings im Text gefunden werden. Es entspricht nicht "happy day".

Beispiele

Gespeicherter Text Teilstring-Abfrage Übereinstimmung
Bridge over Troubled Water ridg roub Ja
Bridge over Troubled Water ridg , roub Ja
Brücke über Wassermangel over brid Ja
Bridge over Troubled Water Aß-Brücke Ja
Bridge over Troubled Water Bridge Bridge Ja
Bridge over Troubled Water Brite Ter Ja
Brücke über Wassermangel Bridge Ja
Brücke über Wassermangel Problemdwater Nein
Brücke über Wassermangel gefroren Nein

Verwenden Sie für die Suche nach einem Teilstring die Funktion TOKENIZE_SUBSTRING in der Spaltendefinition TOKENLIST, wie im folgenden DDL-Beispiel gezeigt:

CREATE TABLE Albums (
  AlbumId STRING(MAX) NOT NULL,
  AlbumTitle STRING(MAX),
  AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);

Verwenden Sie in der SQL-Abfrage die Funktion SEARCH_SUBSTRING in der WHERE-Klausel. Die folgende Abfrage entspricht beispielsweise einem Album mit dem Titel „happy“ aus der im vorherigen Beispiel erstellten Tabelle:

SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');

TOKENIZE_SUBSTRING generiert n-grams für jedes Token und speichert diese N-Gramme im Suchindex. Die minimale und maximale Länge der zu generierenden N-Grammen wird über optionale Argumente konfiguriert.

Teilstring-Suchindexe können 10- bis 30-mal mehr Speicherplatz als Volltextindexe über dieselben Daten, da die Tokenisierung viel mehr Tokens produziert. Dies ist Dies gilt insbesondere, wenn der Unterschied zwischen ngram_size_min und ngram_size_max wächst. Außerdem verbrauchen Substringabfragen mehr Ressourcen.

Wie bei TOKENIZE_FULLTEXT können Sie TOKENIZE_SUBSTRING für die Verwendung bestimmter Inhaltstypen konfigurieren.

Neben der grundlegenden Suche nach Teilstrings unterstützt SEARCH_SUBSTRING den relativen Suchmodus. Mit einer relativen Suche können Sie die Ergebnisse einer Teilstringsuche verfeinern.

Wenn Sie den relativen Suchmodus aktivieren möchten, setzen Sie den Parameter TOKENIZE_SUBSTRINGrelative_search_types auf „TRUE“.

Wenn die relative Suche bei der Tokenisierung aktiviert ist, kann SEARCH_SUBSTRING Abfragen mit den folgenden relativen Suchtypen ausführen:

  • phrase: stimmt mit zusammenhängenden Teilstrings überein

    Beispiele

    Gespeicherter Text Teilzeichenfolgenabfrage. Übereinstimmung
    Bridge over Troubled Water Brücke über Ja
    Bridge over Troubled Water Brücke Brücke Brücke Nein
    Bridge over Troubled Water Bridover Nein
    Bridge over Troubled Water Rücken über Schwierigkeiten Ja
    Bridge over Troubled Water Bridge Ove Problemd Nein
    Bridge over Troubled Water Igé Ove Ja
    Brücke über Wassermangel idge , ove Ja
    Bridge over Troubled Water RIEGEL OVE Ja
    Brücke über Wassermangel Brückenwasser Nein
  • value_prefix: Findet zusammenhängende Teilstrings; der Abgleich muss beginnen Sie am Anfang des Werts. Dies ist konzeptionell ähnlich wie die Funktion STARTS_WITH für Strings, die nach Groß- und Kleinschreibung und Leerzeichen normalisiert wurden.

    Beispiele

    Gespeicherter Text Teilstring-Abfrage Übereinstimmung
    Bridge over Troubled Water Brücke über Ja
    Bridge over Troubled Water Brücke , über Ja
    Brücke über Wassermangel Gebirgskamm über Nein
    Bridge over Troubled Water stürmische Gewässer Nein
  • value_suffix: Findet zusammenhängende Teilstrings; die Übereinstimmung muss an folgender Stelle übereinstimmen: das Ende des Werts hinzu. Dies ist konzeptionell ähnlich wie die Funktion ENDS_WITH für Strings, die nach Groß- und Kleinschreibung und Leerzeichen normalisiert wurden.

    Beispiele

    Gespeicherter Text Teilzeichenfolgenabfrage. Übereinstimmung
    Brücke über Wassermangel Störwasser Ja
    Brücke über Wassermangel Problemd ; Wasser Ja
    Bridge over Troubled Water Roubled Water Ja
    Bridge over Troubled Water verschmutztes Wasser Nein
    Brücke über Wassermangel Unruhe Nein
    Bridge over Troubled Water Bridge Over Nein
  • word_prefix: wie value_prefix, aber der String muss bei einem Begriff übereinstimmen und keine Wertgrenze.

    Beispiele

    Gespeicherter Text Teilstring-Abfrage Übereinstimmung
    Bridge over Troubled Water über Ärger Ja
    Bridge over Troubled Water Über , Problem Ja
    Bridge over Troubled Water trübes Wasser Nein
    Bridge over Troubled Water über Wasser Nein
    Brücke über Wassermangel Irgendwann mühsam Nein
    Bridge over Troubled Water Ver beunruhigend Ja
  • word_suffix: Ähnlich wie value_suffix, aber der String muss am Ende einer Begriffsgrenze übereinstimmen.

    Beispiele

    Gespeicherter Text Teilstring-Abfrage Übereinstimmung
    Brücke über Wassermangel Ver beunruhigend Ja
    Brücke über Wassermangel über Ärger Nein
    Bridge over Troubled Water über Wasser Nein
    Brücke über Wassermangel Irgendwann mühsam Nein

Nächste Schritte