Neben der vollständigen Tokenübereinstimmung unterstützen Spanner-Suchindexe auch Teilstring-Suchanfragen. Auf dieser Seite wird beschrieben, wie Sie eine Suchanfrage nach einem Teilstring im Rahmen einer Volltextsuche in Spanner ausführen.
Suchanfragen nach Unterstrings haben folgende Eigenschaften:
- Groß- und Kleinschreibung wird nicht berücksichtigt, die meisten Satzzeichen werden ignoriert und Leerzeichen werden 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 aus jedem Begriff enthalten. Beispielsweise stimmt
'happ momen'
mit"happy moment"
überein, da beide Teilstrings im Text gefunden werden. Sie stimmt nicht mit"happy day"
überein.
Beispiele
Gespeicherter Text | Teilzeichenfolgenabfrage | Übereinstimmung |
---|---|---|
Bridge over Troubled Water | ridg roub | Ja |
Bridge over Troubled Water | ridg , roub | Ja |
Bridge over Troubled Water | over brid | Ja |
Bridge over Troubled Water | ate-Brücke | Ja |
Bridge over Troubled Water | Brücke Brücke Brücke | Ja |
Bridge over Troubled Water | bri trou ter | Ja |
Bridge over Troubled Water | bri dge | Ja |
Bridge over Troubled Water | troubledwater | Nein |
Bridge over Troubled Water | trubled | 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 für jedes Token N-Gramme und speichert diese N-Gramme im Suchindex. Die minimale und maximale Länge der zu generierenden N-Grammen wird über optionale Argumente konfiguriert.
Indexe für die Suche nach Substrings können 10- bis 30-mal mehr Speicherplatz als Volltextindexe für dieselben Daten belegen, da durch die Tokenisierung viel mehr Tokens erzeugt werden. Dies gilt insbesondere, wenn die Differenz zwischen ngram_size_min
und ngram_size_max
zunimmt. Außerdem werden für die Ausführung von Substring-Abfragen mehr Ressourcen benötigt.
Wie bei TOKENIZE_FULLTEXT
können Sie TOKENIZE_SUBSTRING
für die Verwendung bestimmter Inhaltstypen konfigurieren.
Relative Teilstringsuche 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 relative_search_types
von TOKENIZE_SUBSTRING
auf ein nicht leeres Array mit Elementen der unterstützten relativen Suchtypen.
Wenn die relative Suche bei der Tokenisierung aktiviert ist, kann SEARCH_SUBSTRING
Abfragen mit den folgenden relativen Suchtypen ausführen:
phrase
: Übereinstimmung mit zusammenhängenden TeilstringsBeispiele
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 Überbrückung Nein Bridge over Troubled Water ridge over trouble Ja Bridge over Troubled Water bridge ove troubled Nein Bridge over Troubled Water idge ove Ja Bridge over Troubled Water idge , ove Ja Bridge over Troubled Water RIEGEL OVE Ja Bridge over Troubled Water Brückenwasser Nein value_prefix
: Damit werden zusammenhängende Teilstrings abgeglichen. Die Übereinstimmung muss am Anfang des Werts beginnen. Dies ist konzeptionell ähnlich wie die FunktionSTARTS_WITH
für Strings, die nach Groß- und Kleinschreibung und Leerzeichen normalisiert wurden.Beispiele
Gespeicherter Text Teilzeichenfolgenabfrage Übereinstimmung Bridge over Troubled Water Brücke über Ja Bridge over Troubled Water Brücke , über Ja Bridge over Troubled Water Kamm über Nein Bridge over Troubled Water stürmische Gewässer Nein value_suffix
: Damit werden zusammenhängende Teilstrings abgeglichen. Die Übereinstimmung muss am Ende des Werts erfolgen. 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 Bridge over Troubled Water stürmische Gewässer Ja Bridge over Troubled Water trübes ; wasser Ja Bridge over Troubled Water trübes Wasser Ja Bridge over Troubled Water verschmutztes Wasser Nein Bridge over Troubled Water Unruhe Nein Bridge over Troubled Water Brücke über Nein word_prefix:
ähneltvalue_prefix
, aber der String muss an einer Begriffsgrenze (nicht an einer Wertegrenze) übereinstimmen.Beispiele
Gespeicherter Text Teilzeichenfolgenabfrage Übereinstimmung Bridge over Troubled Water über Probleme Ja Bridge over Troubled Water Viele Grüße Ja Bridge over Troubled Water trübes Wasser Nein Bridge over Troubled Water über Wasser Nein Bridge over Troubled Water ove troubled Nein Bridge over Troubled Water ver troubled Ja word_suffix
: Ähnlich wievalue_suffix
, aber der String muss am Ende einer Wortgrenze übereinstimmen.Beispiele
Gespeicherter Text Teilzeichenfolgenabfrage Übereinstimmung Bridge over Troubled Water ver troubled Ja Bridge over Troubled Water über Probleme Nein Bridge over Troubled Water über Wasser Nein Bridge over Troubled Water ove troubled Nein
Nächste Schritte
- Weitere Informationen zu Abfragen für die Volltextsuche
- Weitere Informationen zum Ranking von Suchergebnissen
- Weitere Informationen zur Paginierung von Suchergebnissen
- Weitere Informationen zum Kombinieren von Volltext- und Nicht-Textabfragen
- Weitere Informationen zur Suche in mehreren Spalten