Panoramica della ricerca a testo intero

Questa pagina descrive che cos'è la ricerca full-text e come funziona.

Panoramica

Una ricerca full-text ti consente di creare un'applicazione che può cercare in una tabella per trovare parole, frasi o numeri, anziché solo cercare corrispondenze esatte in campi strutturati. Le ricerche nel testo integrale restituiscono la risposta più recente coerente con la transazione dei dati nell'applicazione. Spanner le funzionalità di ricerca a testo intero includono anche correzioni ortografiche, automatizzando il rilevamento della lingua degli input di ricerca e il ranking dei risultati di ricerca. Spanner espande automaticamente le ricerche di testo in modo da includere corrispondenza approssimativa delle parole senza ulteriore configurazione.

Devi creare un indice di ricerca su tutte le colonne che vuoi rendere disponibili per ricerche di testo completo. 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.

  • Ricerca di testo di base: cerca i contenuti utilizzando l'intera o parte di una parola o frase per ricevere risultati affidabili. Esempi di predicati di query:
    • Corrispondenza con tutte le parole [tricolor rat terrier]
    • Parola o frasi esatte ["rat terrier"]
    • Una di queste parole [miniature OPPURE standard]
    • Parola nelle vicinanze [tazza del mondo AROUND(3)]
    • Sottostringa [start*]
  • Ricerca numerica: esegue ricerche relative a uguaglianza numerica e disuguaglianze. Le ricerche di uguaglianza corrispondono a un numero. Le ricerche di intervalli e disuguaglianze 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 aiuta anche a trovare una corrispondenza con il testo della query con nomi che contengono errori ortografici, nomi con ortografie alternative e testo con altre varianti 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 l'efficacia di una query corrisponde a un documento (ad esempio, assegnando un peso più elevato a column_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 tutte le occorrenze di parole specifiche.
  • Correzione ortografica: corregge automaticamente le parole con errori ortografici nelle query per trovare la parola digitata correttamente nello spazio di archiviazione. Ad esempio, se l'utente cerca "girafe", la ricerca trova documenti con "giraffe".
  • 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 da e verso il testo: corrisponde alla traduzione 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 sulla ricerca a testo intero

La ricerca a testo intero prevede 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 query SQL per cercare invertito.

Per capire la ricerca a testo intero, diamo un'occhiata a un'applicazione email che utilizza un database per archiviare le email di ciascun utente. Ogni riga è una singola email. Ciascuna l'email contiene colonne come oggetto, corpo, mittente e destinatario. L'applicazione email utilizza la ricerca full-text per consentire all'utente di cercare nella Posta in arrivo utilizzando query in linguaggio naturale:

  • La ricerca supporta query quali Dallas OR Seattle. Applicazioni possono caricare direttamente l'input utente finale dalla casella di ricerca al prompt SEARCH (utilizzando la funzione linguaggio rquery).
  • Spanner usa gli indici di ricerca per cercare i documenti corrispondenti in campi diversi. Ad esempio, un'applicazione email potrebbe inviare un query per cercare "Nota importante" nella riga dell'oggetto con "Budget" nel corpo dell'email e "Mario" nel nome del mittente.

Gli indici di ricerca hanno diversi utilizzi, oltre alla ricerca di testo completo, ad esempio:

  • Indicizzare gli elementi nelle colonne di 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 ulteriori informazioni, vedi Tokenizzazione array.

  • Trovare dati che risiedono nell'intersezione di un insieme delle condizioni delle 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 il testo completo le condizioni di traffico. 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 è 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, 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.

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 sulla tokenizzazione.
  2. Crea un indice di ricerca per contenere i token utilizzando l'istruzione DDL CREATE SEARCH INDEX. Per ulteriori informazioni, vedi Cercare gli indici.
  3. Esegui query su documenti nell'indice di ricerca utilizzando Spanner SEARCH personalizzata. Per ulteriori informazioni, consulta la sezione Panoramica delle query.
  4. Classifica i risultati della query utilizzando la funzione SCORE Spanner. Per ulteriori informazioni, consulta Classificare i risultati di ricerca.

Limitazioni

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 i prezzi di Spanner.

Passaggi successivi