Oltre all'indicizzazione del testo, indice di ricerca, che offre un modo efficiente per indicizzare i numeri. Viene utilizzato principalmente per aumentare le query di ricerca full-text con condizioni sui campi numerici. Questa pagina descrive i numeri di indicizzazione per l'uguaglianza e disuguaglianze e l'indicizzazione di una matrice di numeri.
Tokenizzare i numeri
Puoi usare la funzione TOKENIZE_NUMBER
per creare un indice numerico. Per maggiori dettagli,
consulta TOKENIZE_NUMBER
.
Indicizza i numeri per le query su uguaglianza e disuguaglianza
Spanner supporta l'indicizzazione dei numeri per uguaglianza e diseguaglianza.
Le ricerche di uguaglianza corrispondono a un numero. Le ricerche di intervalli e disuguaglianze corrispondono a un numero
all'interno di un intervallo specifico. Imposta questo valore nel parametro comparison_type
TOKENIZE_NUMBER
:
- Uguaglianza:
comparison_type=>"equality"
- Disparità e uguaglianza:
comparison_type=>"all"
In entrambi i casi, il numero originale (intero o a virgola mobile) viene sottoposto a un processo di tokenizzazione, concettualmente simile alla tokenizzazione del testo completo. Produce un insieme di token che la query può utilizzare per individuare i documenti corrispondenti alla condizione numerica.
L'indicizzazione di uguaglianza produce un solo token, che rappresenta il numero. Questo
è consigliata se le query hanno solo condizioni nel formato field = @p
nella clausola WHERE
.
L'indicizzazione di disuguaglianza e uguaglianza può accelerare una gamma più ampia di condizioni nella clausola WHERE
della query. Sono inclusi field < @p
, field <= @p
,
field > @p
, field >= @p
, field BETWEEN @p1 and @p2
e field <> @p
in
nonché condizioni di uguaglianza. Per implementare questo tipo di indicizzazione,
Spanner produce token nell'indice di ricerca sottostante.
Spanner può produrre molti token per ogni numero indicizzato,
a seconda dei parametri di ottimizzazione. Il numero di token dipende dai parametri
impostati per TOKENIZE_NUMBER
, ad esempio algorithm
, min
, max
e
granularity
. È quindi importante valutare i parametri di ottimizzazione
per garantire un equilibrio appropriato tra spazio di archiviazione su disco e tempo di ricerca.
Tokenizzazione array
Oltre ai valori scalari, TOKENIZE_NUMBER
supporta la tokenizzazione di una
un array di numeri.
Quando TOKENIZE_NUMBER
viene utilizzato con la colonna ARRAY
, devi
specificare comparison_type=>"equality"
. Le query di intervallo non sono supportate con un
un array di numeri.
Ad esempio, considera lo schema seguente:
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);
La seguente query trova tutti gli album con una valutazione pari a 1 o 2:
SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ANY(Ratings, [1, 2])
La seguente query trova tutti gli album con la valutazione 1 e 5:
SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ALL(Ratings, [1, 5])
Passaggi successivi
- Scopri di più sulla tokenizzazione e sui tokenizzatori Spanner.
- Scopri di più sugli indici di ricerca.
- Scopri di più sul partizionamento degli indici.