Oltre alla corrispondenza completa dei token, Spanner indici di ricerca Supporta le ricerche di sottostringhe. In questa pagina viene descritto come eseguire una sottostringa nell'ambito di una ricerca a testo intero 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), a causa delle query CJK parziali spesso segmentano 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é entrambi trovate nel testo. Non corrisponde a"happy day"
.
Esempi
Testo archiviato | Query sulla sottostringa | Corrispondenza |
---|---|---|
Ponte sull'acqua inquinata | Ridg Rub | Sì |
Ponte sull'acqua inquinata | ridg , roub | Sì |
Bridge over Troubled Water | copricapo | Sì |
Ponte sull'acqua inquinata | mangiato ponte | Sì |
Bridge over Troubled Water | Ponte ponte | Sì |
Ponte sull'acqua inquinata | Britannico | Sì |
Bridge over Troubled Water | bri dge | Sì |
Ponte sull'acqua inquinata | acqua turbolenta | No |
Ponte sull'acqua inquinata | trublato | 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-grams
per ogni token e archivia questi n-grammi nell'indice di ricerca. Le metriche minime e
la lunghezza massima di n-grammi da generare è configurata tramite argomenti facoltativi.
Gli indici di ricerca di sottostringhe possono utilizzare uno spazio di archiviazione da 10 a 30 volte maggiore come indici di testo completo
gli stessi dati, perché la tokenizzazione produce molti più token. Questo è
particolarmente vero se come differenza tra ngram_size_min
e
ngram_size_max
cresce. 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.
Attiva una ricerca di sottostringhe relativa
Oltre alla ricerca di base di sottostringhe,
SEARCH_SUBSTRING
supporta la modalità di ricerca relativa. Una ricerca relativa perfeziona la ricerca di sottostringhe
che consentono di analizzare i dati
e visualizzare i risultati.
Per attivare la modalità di ricerca relativa, imposta il valore
TOKENIZE_SUBSTRING
relative_search_types
su TRUE.
Se la ricerca relativa è abilitata nella tokenizzazione, SEARCH_SUBSTRING
può eseguire
con i seguenti tipi di ricerca relativa:
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 Ponte sull'acqua inquinata un ponte Sì Ponte sull'acqua inquinata ponte , sopra Sì Bridge over Troubled Water superare No Ponte sull'acqua inquinata acqua instabile No value_suffix
: corrisponde a sottostringhe contigue e la corrispondenza deve corrispondere in la fine del valore. Concettualmente simile aENDS_WITH
per le stringhe normalizzate in maiuscole e minuscole e con spazi vuoti.Esempi
Testo archiviato Query sottostringa. Corrispondenza Ponte sull'acqua inquinata acque agitate Sì Ponte sull'acqua inquinata turbamento; acqua Sì Bridge over Troubled Water acqua rublo Sì Ponte sull'acqua inquinata acqua travagliata No Ponte sull'acqua inquinata problemi di acqua No Bridge over Troubled Water un ponte No word_prefix:
comevalue_prefix
, ma la stringa deve corrispondere a un termine (piuttosto che limite di valori).Esempi
Testo archiviato Query sulla sottostringa Corrispondenza Ponte sull'acqua inquinata over trouble Sì Ponte sull'acqua inquinata Superato , problema Sì Ponte sull'acqua inquinata acqua troub No Ponte sull'acqua inquinata sull'acqua No Ponte sull'acqua inquinata 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 Ponte sull'acqua inquinata ver troubled Sì Ponte sull'acqua inquinata in caso di problemi No Ponte sull'acqua inquinata sull'acqua No Ponte sull'acqua inquinata ove in difficoltà No
Passaggi successivi
- Scopri di più sulle query di ricerca a testo intero.
- Scopri come classificare i risultati di ricerca.
- Scopri come suddividere in pagine i risultati di ricerca.
- Scopri come combinare query di testo completo e non di testo.
- Scopri come cercare in più colonne.