Tutoriel de recherche en texte intégral postgresql

Tutoriel de recherche en texte intégral postgresql
La recherche en texte intégral est prise en charge dans PostgreSQL. La recherche en texte intégral est utilisée par les moteurs de recherche, les magasins et de nombreux autres sites Web du monde entier.

Par défaut, les recherches sur la base de données PostgreSQL sont exactes. Ce que cela signifie, c'est que lorsque les utilisateurs recherchent «x y z», la base de données PostgreSQL recherche «x y z» dans l'ordre exact dans les champs d'un certain tableau. S'il y a un léger décalage, par exemple, disons que vous avez «x y_z», la base de données ne montrera aucun résultat.

Regardons un scénario de la vie réelle, alors vous serez clair sur ce qu'est la recherche en texte intégral et quel est le besoin de cela.

Disons que vous avez un magasin informatique et que l'utilisateur a recherché «Desktop et ordinateur portable». Pas de problème là-bas. Mais avez-vous réellement un produit qui est un bureau et un ordinateur portable? Avez-vous même un produit dont le titre indique «XXX Desktop et ordinateur portable» exactement comme l'utilisateur a recherché? Très probablement non! La recherche ne parviendrait pas à afficher les résultats pertinents. L'utilisateur voulait probablement répertorier tous les ordinateurs de votre magasin qu'il peut utiliser comme ordinateur de bureau et un ordinateur portable, probablement une tablette convertible. Étant donné que la recherche n'a affiché aucun résultat à l'utilisateur, l'utilisateur peut penser que vous êtes en rupture de stock ou que vous ne l'avez pas dans votre magasin informatique. Mais vous avez de nombreuses tablettes convertibles qui peuvent être utilisées comme bureau et un ordinateur portable dans la base de données de votre magasin. Si les utilisateurs ne le trouvent pas, vous n'obtiendrez aucune vente. Vous souhaitez sur votre site Web pour répertorier tous les ordinateurs convertibles que vous avez en stock lorsque les utilisateurs font une requête de recherche comme celle. C'est là que la recherche en texte intégral entre en jeu. Lorsqu'une recherche ordinaire échoue, la recherche en texte intégral sauve.

Dans cet article, je vais vous montrer comment effectuer une recherche en texte intégral avec PostgreSQL. Commençons.

Configuration de PostgreSQL pour la recherche de texte intégral

Avant de pouvoir pratiquer la recherche en texte intégral sur PostgreSQL avec moi, vous devez configurer PostgreSQL avec des données factices. Dans cette section, je vais vous montrer comment les ajouter sur PostgreSQL.

Créez d'abord une nouvelle base de données avec la commande suivante:

$ crééb it_store

Remarque: ici it_store est le nom de la base de données.

Maintenant, connectez-vous à la coque postgresql du it_store base de données que vous avez créée avec la commande suivante:

$ psql it_store

Vous devriez être connecté aux Postgresql it_store base de données comme vous pouvez le voir dans la capture d'écran ci-dessous.

Je ne vais pas aller trop loin ici. Je vais créer un simple des produits table pour notre base de données informatique. Les champs de base dont j'ai besoin sont un ID de produit, Titre de produit, Description du produit.

Le code SQL pour le tableau des produits est indiqué ci-dessous:

Copiez et collez maintenant la commande SQL pour créer le des produits table dans la coque PostgreSQL comme indiqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, des produits La table doit être créée.

Maintenant, je vais insérer certains produits dans le des produits tableau. Les commandes SQL sont données ci-dessous.

Les produits sont insérés dans le des produits tableau.

Vous pouvez exécuter la commande SQL suivante pour vérifier que:

$ Select * dans les produits;

Comme vous pouvez le voir, le des produits sont dans la table des produits.

Recherche de texte intégral avec PostgreSQL

Dans la section précédente, je vous ai montré comment ajouter des données factice à votre base de données PostgreSQL. Dans cette section, je vais vous montrer comment effectuer une recherche de texte intégral sur ces données avec PostgreSQL.

Dans PostgreSQL, vous utilisez deux fonctions pour effectuer une recherche de texte intégral. Ils sont to_tsvector () et to_tsquery (). Voyons comment ils fonctionnent et les utiliser en premier.

Une visite rapide de to_tsvector () et to_tsquery () Les fonctions

to_tsvector () La fonction rompt la chaîne d'entrée et en crée des jetons, qui est ensuite utilisé pour effectuer une recherche de texte complet à l'aide du to_tsquery () fonction.

Maintenant pour comprendre quoi to_tsvector () La fonction fait à une chaîne d'entrée, ouvrez le shell postgresql et exécutez la commande suivante:

# SELECT TO_TSVECTOR ('J'adore Linux. Linux est un excellent système d'exploitation.');

Comme vous pouvez le voir to_tsvector () fonction dans la section marquée de la capture d'écran ci-dessous, le to_tsvector () La fonction a rompu les mots et a attribué certains nombres en eux.

Vous pouvez utiliser to_tsquery () fonction comme suit:

# Sélectionnez les noms de champ dans TableName
Où TO_TSVECTOR (FIELDNAME) @@ TO_TSQUERY (Conditions)

Conditions de to_tsquery () Fonction

Le to_tsquery () accepte les conditions qu'il utilise pour comparer avec la sortie de to_tsvector () fonction.

Par exemple, si vous recherchez «ordinateur portable et bureau», vous devriez mettre «ordinateur portable et bureau» pour to_tsquery () fonction.

Pour «ordinateur portable ou bureau», la condition devrait être 'ordinateur portable | bureau.

Maintenant, je vais entrer dans notre base de données informatique pour vous montrer quelques exemples du monde réel.

Recherdons un appareil convertible qui peut être utilisé comme ordinateur de bureau et ordinateur portable comme je l'ai parlé plus tôt.

Exécutez la commande SQL suivante pour ce faire:

Comme vous pouvez le voir, le bon ordinateur a été trouvé.

Vous pouvez également retourner les termes. Par exemple, vous pouvez rechercher «ordinateur portable et bureau».

Le résultat correct est toujours affiché.

Disons que l'utilisateur souhaite répertorier tous les ordinateurs de bureau ou d'ordinateur portable dans votre magasin informatique. La requête est «bureau ou ordinateur portable» et l'état de to_tsquery () La fonction doit être 'Desktop | ordinateur portable' ou 'ordinateur portable | bureau.

La commande SQL est:

Comme vous pouvez le voir, tous les ordinateurs du magasin informatique sont répertoriés.

Jetons un coup d'œil à un autre exemple. L'utilisateur recherche tous les ordinateurs portables de votre magasin mais pas les cabriolets. La requête utilisateur peut être `` PAS des ordinateurs portables convertibles '. La condition de to_tsquery () La fonction peut être '!cabriolet et ordinateurs portables '

La commande SQL est:

Comme vous pouvez le voir, l'ordinateur portable correct est trouvé.

Avez-vous remarqué une chose? je mets ordinateurs portables dans le to_tsquery() fonction, mais il n'y a pas ordinateurs portables Mot-clé dans la description du produit. Alors, comment PostgreSQL l'a-t-il trouvé? Eh bien, c'est la magie de la recherche en texte intégral. Les mots clés ne doivent pas être exacts. PostgreSQL peut même gérer des mots, des temps et bien d'autres pluriels.

Par défaut, la recherche en texte intégral ne fonctionne que sur la langue anglaise. Mais PostgreSQL fournit également une prise en charge de certaines autres langues. Consultez la documentation PostgreSQL pour plus d'informations à ce sujet.

C'est ainsi que vous effectuez une recherche en texte intégral sur PostgreSQL. Merci d'avoir lu cet article.