Numerische Suchindexe

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