Panoramica della ricerca a testo intero

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.

  • 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.

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 esempio Prince OR Camille. Le applicazioni possono inserire direttamente l'input utente finale dalla casella di ricerca nella funzione SQL SEARCH (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:

  1. Tokenizza un documento utilizzando le funzioni di tokenizzazione di Spanner, ad esempio TOKENIZE_SUBSTRING. Per ulteriori informazioni, consulta la sezione Tokenizzazione.
  2. Crea un indice di ricerca per contenere i token utilizzando l'istruzione DDL CREATE SEARCH INDEX. Per maggiori informazioni, consulta Indici di ricerca.
  3. Esegui query sui documenti nell'indice di ricerca utilizzando la funzione Spanner SEARCH. Per maggiori informazioni, consulta la panoramica delle query.
  4. Classifica i risultati della query utilizzando la funzione Spanner SCORE. Per saperne di più, consulta Classificare i risultati di ricerca.

Limitazioni

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