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.
Relative Teilstring-Suche aktivieren
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_SUBSTRING
relative_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 übereinBeispiele
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 FunktionSTARTS_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 FunktionENDS_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:
wievalue_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 wievalue_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
- Weitere Informationen zu Abfragen für die Volltextsuche
- Weitere Informationen zum Ranking von Suchergebnissen
- Weitere Informationen zur Paginierung von Suchergebnissen
- Volltext- und Nicht-Text-Abfragen kombinieren
- Weitere Informationen zur Suche in mehreren Spalten