Oltre alla corrispondenza completa dei token, Spanner indici di ricerca Supporta le ricerche di sottostringhe. Questa pagina descrive come eseguire una ricerca di sottostringhe nell'ambito di una ricerca full-text in Spanner.
Panoramica
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 vuoti.
- 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 ogni
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 sottostringa | Corrispondenza |
---|---|---|
Bridge over Troubled Water | Ridg Rub | Sì |
Ponte sull'acqua inquinata | ridg , roub | Sì |
Ponte sull'acqua inquinata | copricapo | Sì |
Bridge over Troubled Water | mangiato ponte | Sì |
Ponte sull'acqua inquinata | Ponte ponte ponte | Sì |
Bridge over Troubled Water | Britannico | Sì |
Ponte sull'acqua inquinata | bri dge | Sì |
Bridge over Troubled Water | troubledwater | No |
Ponte sull'acqua inquinata | trubled | No |
Per una ricerca di sottostringhe, utilizza la funzione TOKENIZE_SUBSTRING
nella colonna TOKENLIST
come mostrato nell'esempio del DDL riportato di seguito:
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
. Per
esempio, la seguente query corrisponde a un album dal titolo "happy" dalla tabella
creato 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. Anche le query sottostringhe utilizzano più risorse per l'esecuzione.
Ad esempio TOKENIZE_FULLTEXT
,
puoi configurare TOKENIZE_SUBSTRING
in modo che utilizzi tipi specifici di contenuti.
Attivare una ricerca di sottostringhe relative
Oltre alla ricerca di base di sottostringhe,
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 sottostringa. Corrispondenza Ponte sull'acqua inquinata attraversare Sì Ponte sull'acqua inquinata Ponte ponte No Ponte sull'acqua inquinata brid over No Bridge over Troubled Water crinale su problema 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ì Ponte sull'acqua inquinata 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 sottostringa Corrispondenza Ponte sull'acqua inquinata attraversare Sì Bridge over Troubled Water ponte , sopra Sì Ponte sull'acqua inquinata dorsale sopra No Bridge over Troubled Water acque agitate No value_suffix
: corrisponde a sottostringhe contigue e la corrispondenza deve corrispondere in la fine del valore. È concettualmente simile alla funzioneENDS_WITH
per le stringhe normalizzate per maiuscole e spazi.Esempi
Testo archiviato Query sottostringa. Corrispondenza Bridge over Troubled Water acqua instabile Sì Ponte sull'acqua inquinata turbamento; acqua Sì Ponte sull'acqua inquinata acqua inquinata Sì Bridge over Troubled Water acque inquinate No Bridge over Troubled Water problemi di acqua No Bridge over Troubled Water un ponte 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 sottostringa Corrispondenza Ponte sull'acqua inquinata in caso di problemi Sì Ponte sull'acqua inquinata Superato , problema Sì Bridge over Troubled Water acqua inquinata No Ponte sull'acqua inquinata sull'acqua No Bridge over Troubled Water ove tormentato No Ponte sull'acqua inquinata ver troubled Sì word_suffix
: comevalue_suffix
, ma la stringa deve corrispondere alla fine del limite di un termine.Esempi
Testo archiviato Query sottostringa Corrispondenza Ponte sull'acqua inquinata ver troubled Sì Bridge over Troubled Water over trouble No Ponte sull'acqua inquinata sull'acqua No Bridge over Troubled Water ove tormentato No
Passaggi successivi
- Scopri di più sulle query di ricerca full-text.
- Scopri come classificare i risultati di ricerca.
- Scopri come suddividere in pagine i risultati di ricerca.
- Scopri come combinare query full-text e non di testo.
- Scopri come cercare in più colonne.