Oltre alla corrispondenza completa dei token, gli indici di ricerca di Spanner supportano le ricerche di sottostringhe. Questa pagina descrive come eseguire una ricerca di sottostringhe nell'ambito di una ricerca a testo intero in Spanner.
Le ricerche di sottostringhe hanno le seguenti caratteristiche:
- Non fa distinzione tra maiuscole e minuscole, ignora la maggior parte della punteggiatura e normalizza gli spazi.
- Nessuna segmentazione in cinese, giapponese e coreano (CJK), poiché le query CJK parziali spesso vengono segmentate in modo errato.
- Per più termini di ricerca, il risultato deve contenere una sottostringa di ciascun termine. Ad esempio,
'happ momen'
corrisponde a"happy moment"
, perché entrambe le sottostringhe sono presenti nel testo. Non corrisponde a"happy day"
.
Esempi
Testo archiviato | Query sulla sottostringa | Corrispondenza |
---|---|---|
Bridge over Troubled Water | ridg roub | Sì |
Bridge over Troubled Water | ridg , roub | Sì |
Bridge over Troubled Water | over brid | Sì |
Bridge over Troubled Water | ponte di ate | Sì |
Bridge over Troubled Water | Ponte ponte ponte | Sì |
Bridge over Troubled Water | bri trou ter | Sì |
Bridge over Troubled Water | bri dge | Sì |
Bridge over Troubled Water | troubledwater | No |
Bridge over Troubled Water | trubled | No |
Per una ricerca di sottostringhe, utilizza la funzione TOKENIZE_SUBSTRING
nella definizione della colonna TOKENLIST
, come mostrato nell'esempio DDL seguente:
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
Nella query SQL, utilizza la funzione SEARCH_SUBSTRING
nella clausola WHERE
. Ad esempio, la seguente query corrisponde a un album con il titolo "happy" della tabella creata nell'esempio precedente:
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
TOKENIZE_SUBSTRING
genera n-grammi per ogni token e li memorizza nell'indice di ricerca. La lunghezza minima e massima degli n-gram da generare sono configurate tramite argomenti facoltativi.
Gli indici di ricerca delle sottostringhe possono utilizzare fino a 10-30 volte più spazio di archiviazione rispetto agli indici di testo completo per gli stessi dati, perché la tokenizzazione produce molti più token. Ciò è particolarmente vero se la differenza tra ngram_size_min
e
ngram_size_max
aumenta. Inoltre, le query sulla sottostringa richiedono più risorse per l'esecuzione.
Come TOKENIZE_FULLTEXT
,
puoi configurare TOKENIZE_SUBSTRING
per utilizzare tipi specifici di contenuti.
Attivare una ricerca di sottostringhe relative
Oltre alla ricerca di sottostringhe di base,
SEARCH_SUBSTRING
supporta la modalità di ricerca relativa. Una ricerca relativa perfeziona i risultati di ricerca per sottostringa.
Per attivare la modalità di ricerca relativa, imposta il parametro
TOKENIZE_SUBSTRING
relative_search_types
su TRUE.
Quando la ricerca relativa è attivata nella tokenizzazione, SEARCH_SUBSTRING
può eseguire query con i seguenti tipi di ricerca relativa:
phrase
: corrisponde a sottostringhe contigueEsempi
Testo archiviato Query sulla sottostringa. Corrispondenza Bridge over Troubled Water attraversare Sì Bridge over Troubled Water Ponte ponte ponte No Bridge over Troubled Water brid over No Bridge over Troubled Water superare i problemi Sì Bridge over Troubled Water ponte ove travagliato No Bridge over Troubled Water idge ove Sì Bridge over Troubled Water idge , ove Sì Bridge over Troubled Water RIDGE OVE Sì Bridge over Troubled Water acqua del ponte No value_prefix
: corrisponde a sottostringhe contigue e la corrispondenza deve iniziare all'inizio del valore. È concettualmente simile alla funzioneSTARTS_WITH
per le stringhe normalizzate per maiuscole e spazi.Esempi
Testo archiviato Query sulla sottostringa Corrispondenza Bridge over Troubled Water attraversare Sì Bridge over Troubled Water ponte , sopra Sì Bridge over Troubled Water superare No Bridge over Troubled Water acque agitate No value_suffix
: corrisponde a sottostringhe contigue e la corrispondenza deve trovarsi alla fine del valore. È concettualmente simile alla funzioneENDS_WITH
per le stringhe normalizzate per maiuscole e spazi.Esempi
Testo archiviato Query sulla sottostringa. Corrispondenza Bridge over Troubled Water acque agitate Sì Bridge over Troubled Water acqua ; agitata Sì Bridge over Troubled Water acqua inquinata Sì Bridge over Troubled Water acque inquinate No Bridge over Troubled Water acqua inquinata No Bridge over Troubled Water attraversare No word_prefix:
comevalue_prefix
, ma la stringa deve corrispondere a un confine di termine (anziché a un confine di valore).Esempi
Testo archiviato Query sulla sottostringa Corrispondenza Bridge over Troubled Water over trouble Sì Bridge over Troubled Water Over , trouble Sì Bridge over Troubled Water acqua inquinata No Bridge over Troubled Water sull'acqua No Bridge over Troubled Water ove in difficoltà No Bridge over Troubled Water ver troubled Sì word_suffix
: comevalue_suffix
, ma la stringa deve corrispondere alla fine di un confine del termine.Esempi
Testo archiviato Query sulla sottostringa Corrispondenza Bridge over Troubled Water ver troubled Sì Bridge over Troubled Water over trouble No Bridge over Troubled Water sull'acqua No Bridge over Troubled Water ove in difficoltà No
Passaggi successivi
- Scopri di più sulle query di ricerca a testo intero.
- Scopri come determinare il ranking dei risultati di ricerca.
- Scopri come paginare i risultati di ricerca.
- Scopri come combinare query a testo intero e non di testo.
- Scopri come eseguire ricerche in più colonne.