Questa pagina descrive cos'è la ricerca a testo intero e come funziona.
Una ricerca a testo intero ti consente di creare un'applicazione in grado di cercare una tabella per trovare parole, frasi o numeri, anziché cercare solo corrispondenze esatte in campi strutturati. Le ricerche a testo intero restituiscono i dati di cui è stato eseguito il commit più recenti e coerenti a livello transazionale alla tua applicazione. Le funzionalità di ricerca a testo intero di Spanner includono anche la correzione ortografica, l'automazione del rilevamento della lingua dell'input di ricerca e il ranking dei risultati di ricerca. La chiave si espande automaticamente per includere la corrispondenza approssimativa delle parole.
Devi creare un indice di ricerca su tutte le colonne che vuoi rendere disponibili per le ricerche full-text. 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 salvati nel database.
Tipi di ricerca a testo intero
- Ricerca di testo di base: cerca contenuti utilizzando l'intera parola o frase o parte di essa per ricevere risultati affidabili. Predicati di query di esempio:
- Corrispondenza con tutte le parole [tricolor rat terrier]
- Parole o frasi esatte ["rat terrier"]
- Una qualunque di queste parole [miniature OR standard]
- Parola in prossimità [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 per intervallo e disuguaglianza corrispondono a un numero all'interno di un intervallo specifico.
- Ricerca basata su n-grammi: abbina le parole con varianti ortografiche, inclusi nomi propri. Questo tipo di ricerca consente anche di abbinare il testo della query a nomi con errori ortografici, nomi con ortografie alternative e testo con altre varianti ortografiche.
- Ricerche Soundex: trova corrispondenze con parole dal 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 a column_A). Utilizza espressioni SQL per personalizzare la classificazione.
- 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 ulteriori ottimizzazioni.
- Governance: trova ogni occorrenza di parole specifiche.
- Correzione ortografica: corregge automaticamente le parole con errori ortografici nelle query in modo che corrispondano alla parola con ortografia corretta nello spazio di archiviazione. Ad esempio, se l'utente cerca "girafe", la ricerca trova documenti con "giraffa".
- Aggiunta di sinonimi contestuali, incluse le stop word: 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 gattino".
- Traduzione contestuale dei numeri da e verso il testo: associa la versione testuale di un numero alla rappresentazione numerica e viceversa. Ad esempio, "cinque gatti" corrisponde a "5 gatti".
- Conversione automatica del plurale: "cat" corrisponde a "cats".
Concetti relativi alla ricerca a testo intero
La ricerca a testo intero presenta i seguenti concetti chiave:
- Un documento si riferisce ai dati ricercabili in una determinata riga.
- Un token si riferisce a ogni parola di un documento archiviato 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 invertito memorizza i token. Utilizza le query SQL per cercare nell'indice invertito.
Esempio di caso d'uso per la ricerca full-text
Per comprendere la ricerca full-text, esaminiamo un'applicazione che utilizza un database per archiviare i brani di ogni cantante. Ogni riga è un singolo brano. Ogni canzone contiene colonne come titolo, testo, cantante e album. L'applicazione utilizza la ricerca full-text per consentire a un utente di cercare un brano utilizzando query in linguaggio naturale:
- La ricerca supporta le query che utilizzano l'operatore
OR
, ad esempioPrince OR Camille
. Le applicazioni possono inserire direttamente l'input utente finale dalla casella di ricerca nella funzione SQLSEARCH
(utilizzando la sintassi rquery). Per maggiori informazioni, consulta Eseguire una query su un indice di ricerca. - Spanner utilizza gli indici di ricerca per cercare documenti corrispondenti in campi diversi. Ad esempio, un'applicazione può inviare una query per cercare "cry" nel titolo, con "so cold" nel testo e "Prince" come cantante.
Altri utilizzi degli indici di ricerca
Gli indici di ricerca hanno una serie di utilizzi oltre alla ricerca a testo intero, ad esempio:
Indicizzazione degli elementi nelle colonne dell'array. Prendi in considerazione un'applicazione che utilizza una colonna di array per archiviare i tag associati a un elemento. 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, brand, 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 ricerca a testo intero. Ecco alcuni esempi di casi in cui un indice di ricerca è utile per le ricerche numeriche:
- Se combinato con un'applicazione full-text. Ad esempio, per trovare un'email con oggetto Foto e dimensioni superiori a 1 MB.
- Quando fa parte di un'intersezione di condizioni descritte in precedenza.
Ad esempio, per trovare prodotti in cui
color = "yellow" AND size = 14 AND rating >= 4.5
. - Quando cerchi l'intersezione di colonne numeriche. Ad esempio, considera una tabella che memorizza gli orari di inizio e di fine degli eventi. Gli indici di ricerca possono implementare in modo efficiente una query che cerca eventi che si sono verificati in un determinato momento:
start_time <= @p AND end_time > @p
.
Per ulteriori informazioni, consulta la sezione 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 Tokenizzazione. - Crea un indice di ricerca per contenere i token utilizzando l'istruzione DDL
CREATE SEARCH INDEX
. Per maggiori informazioni, consulta Indici di ricerca. - Esegui query sui documenti nell'indice di ricerca utilizzando la funzione Spanner
SEARCH
. Per maggiori informazioni, consulta la panoramica delle query. - Classifica i risultati della query utilizzando la funzione Spanner
SCORE
. Per saperne di più, consulta Classificare i risultati di ricerca.
Limitazioni
- La ricerca a testo intero non supporta Assured Workloads.
Prezzi
Non ci sono addebiti aggiuntivi da parte di Spanner quando utilizzi la ricerca full-text, anche se l'implementazione della ricerca full-text aumenta i costi a causa della necessità di risorse di calcolo e archiviazione aggiuntive.
Per ulteriori informazioni, consulta la pagina 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.