Questa pagina descrive che cos'è la ricerca a testo intero e come funziona.
Una ricerca a testo intero ti consente di creare un'applicazione che può cercare in una tabella per trovare parole, frasi o numeri, anziché solo cercare corrispondenze esatte nei campi strutturati. Le ricerche a testo intero restituiscono alla tua applicazione i dati committati più recenti e coerenti a livello di transazioni. Le funzionalità di ricerca a testo intero di Spanner includono anche la correzione dell'ortografia, l'automazione del rilevamento della lingua dell'input di ricerca e il ranking dei risultati di ricerca. Spanner espande automaticamente le ricerche di testo per includere la corrispondenza approssimativa delle parole.
Devi creare un indice di ricerca per tutte le colonne che vuoi rendere disponibili per le ricerche a testo intero. Spanner analizza i dati in queste colonne per identificare le singole parole da aggiungere all'indice di ricerca. Spanner aggiorna l'indice di ricerca con i dati nuovi o modificati non appena vengono confermati nel database.
Tipi di ricerca a testo intero
- Ricerca di testo di base: consente di cercare contenuti utilizzando l'intera o parte di una parola o frase per ricevere risultati affidabili. Predicati di query di esempio:
- Corrispondenza con tutte le parole [tricolor rat terrier]
- Parole o frasi esatte ["rat terrier"]
- Una di queste parole [miniature OPPURE standard]
- Parola nelle immediate vicinanze [world AROUND(3) cup]
- Sottostringa [start*]
- Ricerca numerica: esegue ricerche di uguaglianza e disuguaglianza numerica. Le ricerche di uguaglianza corrispondono a un numero. Le ricerche con intervallo e disuguaglianza corrispondono a un numero compreso in un intervallo specifico.
- Ricerca basata su n-gram: abbina le parole con le varianti ortografiche, inclusi nomi e nomi propri. Questo tipo di ricerca consente inoltre di associare il testo della query a nomi con errori ortografici, nomi con ortografie alternative e testo con altre variazioni ortografiche.
- Ricerche con codice Soundex: trova le parole che hanno un suono simile.
Funzionalità di ricerca a testo intero
La ricerca a testo intero di Spanner offre le seguenti funzionalità:
- Risultati di ricerca classificati: calcola un punteggio per valutare la corrispondenza di una query con un documento (ad esempio, assegnando un peso maggiore alla colonna_A). Utilizza le espressioni SQL per personalizzare il ranking.
- Snippet: evidenzia il testo corrispondente nel risultato di ricerca.
- Supporto globale: supporta automaticamente la tokenizzazione in diverse lingue, inclusa la segmentazione CJK. La specifica manuale della lingua ti consente di eseguire un ulteriore perfezionamento.
- Governance: trova ogni occorrenza di parole specifiche.
- Correzione ortografica: corregge automaticamente le parole con errori ortografici nelle query per associarle alla parola scritta correttamente archiviata. Ad esempio, se l'utente cerca "giraffa", la ricerca trova i documenti con "giraffa".
- Aggiunta di sinonimi contestuali, incluse le parole proibite: aggiunge automaticamente sinonimi pertinenti al contesto per aumentare il richiamo. Ad esempio, "la casa" corrisponde a "questa casa" e "foto di gatto" corrisponde a "foto di micio".
- Traduzione di numeri contestuali in testo e viceversa: abbina la versione testuale di un numero alla rappresentazione numerica e viceversa. Ad esempio, "cinque gatti" corrisponde a "5 gatti".
- Conversione automatica al plurale: abbina "gatto" a "gatti".
Concetti relativi alla ricerca a testo intero
La ricerca a testo intero ha i seguenti concetti chiave:
- Un documento si riferisce ai dati disponibili per la ricerca in una determinata riga.
- Un token si riferisce a ogni parola di un documento archiviata in un indice di ricerca.
- Un processo di tokenizzazione suddivide un documento in token.
- Un tokenizer è una funzione SQL utilizzata per la tokenizzazione.
- Un indice inverso memorizza i token. Utilizza le query SQL per eseguire ricerche nell'indice inverso.
Esempio di caso d'uso per la ricerca a testo intero
Per comprendere la ricerca full-text, diamo un'occhiata a un'applicazione che utilizza un database per memorizzare i brani di ciascun cantante. Ogni riga è un singolo brano. Ogni brano contiene colonne come titolo, testo, cantante e album. L'applicazione utilizza la ricerca a testo intero per consentire a un utente di cercare un brano utilizzando query in linguaggio naturale:
- La ricerca supporta le query che utilizzano l'operatore
OR
, comePrince OR Camille
. Le applicazioni possono inviare direttamente l'input utente finale dalla casella di ricerca alla funzione SQLSEARCH
(utilizzando la sintassi rquery). - Spanner utilizza gli indici di ricerca per cercare documenti corrispondenti in diversi campi. Ad esempio, un'applicazione potrebbe emettere una query per cercare "cry" nella riga dell'oggetto con "so cold" nel testo e "Prince" come cantante.
Altri utilizzi degli indici di ricerca
Gli indici di ricerca hanno diversi utilizzi oltre alla ricerca a testo intero, ad esempio:
Indicizzazione degli elementi nelle colonne dell'array. Prendiamo in considerazione un'applicazione che utilizza una colonna di array per archiviare i tag associati a un articolo. Con gli indici di ricerca, l'applicazione può cercare in modo efficiente le righe contenenti un tag specifico. Per maggiori informazioni, consulta la sezione Tokenizzazione degli array.
Trovare i dati che si trovano nell'intersezione di un insieme di condizioni di query. Ad esempio, puoi utilizzare un insieme arbitrario di attributi (colore, taglia, marca, valutazione e così via) per cercare un prodotto in un catalogo.
Utilizzo di condizioni di ricerca numeriche, da sole o in combinazione con condizioni di testo completo. Ecco alcuni esempi di casi in cui un indice di ricerca è utile per le ricerche numeriche:
- Se è combinato con un'applicazione di testo completo. Ad esempio, per trovare un'email con l'oggetto Foto e dimensioni superiori a 1 MB.
- Quando fa parte di un'intersezione di condizioni descritte in precedenza.
Ad esempio, per trovare i prodotti in cui
color = "yellow" AND size = 14 AND rating >= 4.5
. - Quando cerchi l'intersezione di colonne numeriche. Ad esempio, prendi in considerazione una tabella che memorizza le ore di inizio e di fine degli eventi. Gli indici di ricerca possono implementare in modo efficiente una query che cerca gli eventi che si sono verificati in un determinato momento:
start_time <= @p AND end_time > @p
.
Per ulteriori informazioni, consulta Indici numerici.
Passaggi per la ricerca a testo intero
In Spanner, la ricerca a testo intero richiede i seguenti passaggi:
- Tokenizza un documento utilizzando le funzioni di tokenizzazione di Spanner, ad esempio
TOKENIZE_SUBSTRING
. Per ulteriori informazioni, consulta la sezione sulla tokenizzazione. - Crea un indice di ricerca per contenere i token utilizzando l'istruzione DDL
CREATE SEARCH INDEX
. Per ulteriori informazioni, consulta la pagina relativa agli indici di ricerca. - Esegui query sui documenti nell'indice di ricerca utilizzando la funzione
SEARCH
Spanner. Per ulteriori informazioni, consulta la sezione Panoramica delle query. - Classifica i risultati della query utilizzando la funzione
SCORE
Spanner. Per saperne di più, consulta Classificare i risultati di ricerca.
Limitazioni
- La ricerca a testo intero non supporta Assured Workloads.
Prezzi
Spanner non prevede costi aggiuntivi quando utilizzi la ricerca full-text, anche se l'implementazione della ricerca full-text aumenterà i costi a causa della necessità di risorse di calcolo e archiviazione aggiuntive.
Per ulteriori informazioni, consulta la sezione Prezzi di Spanner.
Passaggi successivi
- Scopri di più sulla tokenizzazione e sui tokenizzatori Spanner.
- Scopri di più sugli indici di ricerca.
- Scopri di più sulle query di ricerca a testo intero.