AlloyDB Omni supporta tutte le funzionalità di ricerca a testo intero, incluso il supporto per gli indici GIN e GiST.
Concetti principali della ricerca a testo intero
Per implementare in modo efficace la ricerca a testo intero (FTS), devi capire 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. La procedura di creazione dell'indice analizza questo documento per associare le parole (o lessemi, la forma base di una parola) alla riga.
Questa procedura prevede una pipeline di pre-elaborazione che trasforma il testo non elaborato in un formato ricercabile:
- Suddividendo il testo in token.
- Rimuovendo le parole di arresto comuni.
- Normalizzando le parole alla loro forma radicale; ad esempio, "correre" è il lessema di "correre", "correndo" e "corso".
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 a testo intero:
tsvector: rappresenta un documento in un formato ricercabile, come un elenco ordinato di lessemi distinti.tsquery: rappresenta i termini di ricerca, inclusi gli operatori booleani che consentono di combinare i lessemi.@@: verifica se untsvectorcorrisponde a untsquery, 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 le funzionalità di ricerca specifiche richieste, come la ricerca di frasi o la classificazione per pertinenza.
Per saperne di più su come creare e utilizzare gli indici RUM in AlloyDB Omni, vedi Creare e gestire un indice RUM.
Combinare la ricerca a testo intero e la ricerca semantica
Le implementazioni di ricerca più potenti spesso combinano la ricerca a testo intero utilizzando gli indici RUM e la ricerca vettoriale. Utilizza la ricerca ibrida per unire i punti di forza della comprensione semantica e della corrispondenza esatta delle parole chiave, unendo i set di risultati distinti per una classificazione completa.
Ad esempio, in un'applicazione di e-commerce, potresti prima utilizzare la ricerca a testo intero con RUM per trovare i prodotti contenenti parole chiave specifiche come "scarpe da corsa" e utilizzare la ricerca vettoriale per trovare i risultati in base alla somiglianza semantica con una query più dettagliata di un utente, ad esempio "calzature comode per l'allenamento a lunga distanza". Il database unisce quindi i risultati classificati di entrambi i componenti di ricerca in un unico elenco unificato utilizzando l'algoritmo Reciprocal Rank Fusion (RRF) per produrre una classificazione finale.
Per saperne di più sull'utilizzo di questo approccio ibrido, vedi Eseguire una ricerca ibrida di somiglianza vettoriale.
Passaggi successivi
- Scopri come creare e gestire un indice RUM.
- Scopri come eseguire una ricerca ibrida di somiglianza vettoriale.