Panoramica della ricerca a testo intero

Seleziona una versione della documentazione:

La ricerca a testo intero (FTS) ti consente di identificare i documenti in linguaggio naturale che soddisfano una query. Questo approccio è più efficace della corrispondenza di stringhe standard perché tiene conto delle sfumature linguistiche, ad esempio ignorando parole comuni come "il" e trovando corrispondenze con diverse forme di una parola, come "correre", "corsa" o "corse".

AlloyDB Omni supporta tutte le funzionalità e le capacità di ricerca a testo intero, incluso il supporto per gli indici GIN e GiST.

Per implementare in modo efficace la ricerca a testo intero (FTS), devi comprendere come PostgreSQL elabora e cerca il testo. L'unità di ricerca, un documento, è in genere una colonna di testo o una combinazione di colonne di una riga. Il processo di creazione dell'indice analizza questo documento per associare le parole (o i lessemi, la forma di base di una parola) alla riga.

Questo processo prevede una pipeline di pre-elaborazione che trasforma il testo non elaborato in un formato ricercabile:

  • Suddivisione del testo in token.
  • Rimozione delle stop word comuni.
  • Normalizzazione delle parole alla loro forma radicale; ad esempio, "run" è il lessema per "run", "runs", "running" e "ran".

L'utilizzo della ricerca a testo intero richiede anche di conoscere i tipi di dati specializzati, gli operatori e le varie strategie di indicizzazione, inclusi gli indici PostgreSQL integrati e gli indici RUM ad alte prestazioni.

PostgreSQL utilizza due tipi di dati principali e un operatore di corrispondenza per gestire la ricerca full-text:

  • tsvector: rappresenta un documento in un formato ricercabile, ovvero un elenco ordinato di lessemi distinti.
  • tsquery: rappresenta i termini di ricerca, inclusi gli operatori booleani che ti consentono di combinare i lessemi.
  • @@: controlla se un tsvector corrisponde a un tsquery, consentendo ricerche linguisticamente consapevoli.

AlloyDB Omni supporta tutti i tipi di indici per la ricerca a testo intero supportati da PostgreSQL integrato. La scelta dell'indice dipende dall'equilibrio tra velocità di ricerca, tempo di creazione dell'indice, velocità di aggiornamento e funzionalità di ricerca specifiche richieste, come la ricerca di frasi o il ranking di pertinenza.

Per saperne di più su come creare e utilizzare gli indici RUM in AlloyDB Omni, consulta Crea e gestisci un indice RUM in AlloyDB per PostgreSQL.

Le implementazioni di ricerca più potenti spesso combinano la ricerca a testo intero utilizzando indici RUM e Vector Search. Utilizza la ricerca ibrida per unire i punti di forza della comprensione semantica e della corrispondenza esatta delle parole chiave, unendo i distinti set di risultati per un ranking completo.

Ad esempio, in un'applicazione di e-commerce, puoi prima utilizzare la ricerca a testo intero con RUM per trovare prodotti contenenti parole chiave specifiche come "scarpe da corsa" e utilizzare Vector Search per trovare risultati in base alla somiglianza semantica con una query più dettagliata di un utente, ad esempio "calzature comode per l'allenamento su lunghe distanze". Il database unisce quindi i risultati classificati di entrambi i componenti di ricerca in un'unica lista unificata utilizzando l'algoritmo Reciprocal Rank Fusion (RRF) per produrre un ranking finale.

Passaggi successivi