Présentation de la recherche en texte intégral

Sélectionnez une version de la documentation :

La recherche en texte intégral vous permet d'identifier les documents en langage naturel qui répondent à une requête. Cette approche est plus efficace que la correspondance de chaînes standard, car elle tient compte des nuances linguistiques, par exemple en ignorant les mots courants comme "le" et en faisant correspondre différentes formes d'un mot, telles que "courir", "course" ou "couru".

AlloyDB Omni est compatible avec toutes les fonctionnalités de recherche en texte intégral, y compris les index GIN et GiST.

Pour mettre en œuvre efficacement la recherche en texte intégral, 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 création d'index analyse ce document pour associer des mots (ou 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 consultable en procédant comme suit :

  • Division du texte en jetons.
  • Suppression des mots vides courants.
  • Normalisation des mots à leur forme racine. Par exemple, "courir" est le lexème de "courir", "course", "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 consultable, sous forme de 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 un tsvector correspond à un tsquery, 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. Le choix de l'index dépend de l'équilibre entre la vitesse de recherche, la durée de la 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.

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 de commerce électronique, 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 de l'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 dans une liste unique et unifiée à l'aide de l'algorithme Reciprocal Rank Fusion (RRF) pour produire un classement final.

Pour en savoir plus sur l'utilisation de cette approche hybride, consultez Exécuter une recherche hybride de similarité vectorielle.

Étape suivante