Neben dem Indexieren von Text Suchindex bietet eine eine effiziente Methode zum Indexieren von Zahlen. Sie wird hauptsächlich verwendet, um Abfragen der Volltextsuche um Bedingungen für numerische Felder zu ergänzen. Auf dieser Seite wird beschrieben, wie Zahlen für Gleichheits- und Ungleichheitsabfragen sowie für ein Array von Zahlen indexiert werden.
Zahlen tokenisieren
Mit der Funktion TOKENIZE_NUMBER
können Sie einen numerischen Index erstellen. Weitere Informationen finden Sie unter TOKENIZE_NUMBER
.
Indexnummern für Gleichheits- und Ungleichheitsabfragen
Spanner unterstützt die Indexierung von Zahlen für Gleichheit und Ungleichheit.
Bei Gleichheitsabfragen wird eine Zahl verglichen. Bereichs- und Ungleichheitssuchen stimmen mit einer Zahl überein
innerhalb eines bestimmten Bereichs liegen. Sie legen diesen Wert im
TOKENIZE_NUMBER
-comparison_type
-Parameter:
- Gleichheit:
comparison_type=>"equality"
- Ungleichheit und Gleichheit:
comparison_type=>"all"
In beiden Fällen wird die ursprüngliche Zahl (Ganzzahl oder Gleitkomma) ein Prozess der Tokenisierung, der konzeptionell dem Volltext ähnelt Tokenisierung. Sie generiert eine Reihe von Tokens, die die Abfrage dann verwenden kann, um Dokumente, die der Zahlenbedingung entsprechen.
Die Gleichheitsindexierung erzeugt nur ein Token, das die Zahl darstellt. Dieser Modus wird empfohlen, wenn Abfragen nur Bedingungen in Form von field = @p
in der WHERE
-Klausel enthalten.
Ungleichheits- und Gleichheitsindexierung
kann ein breiteres Spektrum an Bedingungen in
die WHERE
-Klausel der Abfrage. Dazu gehören field < @p
, field <= @p
,
field > @p
, field >= @p
, field BETWEEN @p1 and @p2
und field <> @p
in
zu den Gleichheitsbedingungen gehört. Zur Implementierung dieser Art der Indexierung generiert Spanner Tokens im zugrunde liegenden Suchindex.
Spanner kann für jede indexierte Nummer
viele Tokens erstellen.
abhängig von den Abstimmungsparametern. Die Anzahl der Tokens hängt von den Parametern ab, die für TOKENIZE_NUMBER
festgelegt sind, z. B. algorithm
, min
, max
und granularity
. Daher ist es wichtig, die Abstimmungsparameter auszuwerten
um ein ausgewogenes Verhältnis zwischen Festplattenspeicher und Suchzeit zu gewährleisten.
Arraytokenisierung
Neben skalaren Werten unterstützt TOKENIZE_NUMBER
die Tokenisierung eines Zahlenarrays.
Wenn TOKENIZE_NUMBER
mit der Spalte ARRAY
verwendet wird, müssen Sie
Geben Sie comparison_type=>"equality"
an. Bereichsabfragen werden nicht unterstützt mit einem
Array von Zahlen.
Betrachten Sie zum Beispiel das folgende Schema:
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
Ratings ARRAY<INT64>,
Ratings_Tokens TOKENLIST
AS (TOKENIZE_NUMBER(Ratings, comparison_type=>"equality")) HIDDEN
) PRIMARY KEY(AlbumId);
CREATE SEARCH INDEX AlbumsIndex ON Albums(Grades_Tokens);
Mit der folgenden Abfrage werden alle Alben mit einer Bewertung von 1 oder 2 gefunden:
SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ANY(Ratings, [1, 2])
Die folgende Abfrage findet alle Alben, die als 1 und 5 bewertet wurden:
SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ALL(Ratings, [1, 5])
Nächste Schritte
- Weitere Informationen zur Tokenisierung und zu Spanner-Tokenisierern
- Weitere Informationen zu Suchindexen
- Weitere Informationen zur Indexpartitionierung