AlloyDB Omni est compatible avec toutes les fonctionnalités de recherche en texte intégral, y compris les index GIN et GiST.
Concepts fondamentaux de la recherche en texte intégral
Pour implémenter efficacement la recherche en texte intégral (FTS), vous devez comprendre comment PostgreSQL traite et recherche du texte. L'unité de recherche, un document, est généralement une colonne de texte ou une combinaison de colonnes d'une ligne. Le processus de compilation de l'index analyse ce document pour associer des mots (ou des lexèmes, la forme de base d'un mot) à la ligne.
Ce processus implique un pipeline de prétraitement qui transforme le texte brut en un format interrogeable en :
- Diviser le texte en jetons.
- Supprimer les mots vides courants.
- Normalisation des mots à leur forme racine. Par exemple, "courir" est le lexème de "courir", "cours", "courant" et "couru".
L'utilisation de la recherche en texte intégral nécessite également de vous familiariser avec les types de données spécialisés, les opérateurs et les différentes stratégies d'indexation, y compris les index PostgreSQL intégrés et les index RUM hautes performances.
PostgreSQL utilise deux types de données principaux et un opérateur de correspondance pour gérer la recherche en texte intégral :
tsvector: représente un document dans un format interrogeable, sous la forme d'une liste triée de lexèmes distincts.tsquery: représente les termes de recherche, y compris les opérateurs booléens qui vous permettent de combiner des lexèmes.@@: vérifie si untsvectorcorrespond à untsquery, ce qui permet d'effectuer des recherches linguistiques.
AlloyDB Omni est compatible avec tous les types d'index pour la recherche en texte intégral compatibles avec PostgreSQL intégré. Le choix de l'index dépend de l'équilibre entre la vitesse de recherche, le temps de compilation de l'index, la vitesse de mise à jour et les fonctionnalités de recherche spécifiques requises, telles que la recherche d'expressions ou le classement par pertinence.
Pour en savoir plus sur la création et l'utilisation d'index RUM dans AlloyDB Omni, consultez Créer et gérer un index RUM dans AlloyDB pour PostgreSQL.
Combiner la recherche en texte intégral et la recherche sémantique
Les implémentations de recherche les plus puissantes combinent souvent la recherche en texte intégral à l'aide d'index RUM et la recherche vectorielle. Utilisez la recherche hybride pour combiner les avantages de la compréhension sémantique et de la correspondance exacte des mots clés, en fusionnant les ensembles de résultats distincts pour un classement complet.
Par exemple, dans une application d'e-commerce, vous pouvez d'abord utiliser la recherche en texte intégral avec RUM pour trouver des produits contenant des mots clés spécifiques tels que "chaussures de course", puis utiliser la recherche vectorielle pour trouver des résultats basés sur la similarité sémantique avec une requête plus détaillée d'un utilisateur, telle que "chaussures confortables pour l'entraînement longue distance". La base de données fusionne ensuite les résultats classés des deux composants de recherche en une seule liste unifiée à l'aide de l'algorithme Reciprocal Rank Fusion (RRF) pour produire un classement final.
Étapes suivantes
- Découvrez comment créer et gérer un index RUM dans AlloyDB pour PostgreSQL.