MySQL FullText Searching

MySQL FullText Searching
MySQL utilise un index général pour les colonnes de la table pour rendre la recherche plus rapidement, et ce type de recherche est appelé l'index Btree. Un autre type d'index est l'index complet, qui est différent de l'index btree. L'index FullText est utilisé pour rechercher un mot-clé particulier dans le texte plutôt que la valeur spécifique dans les colonnes indexées. L'index Btree et l'index complet peuvent être appliqués à la même colonne du tableau.

Caractéristiques de l'index de texte complet

  1. Il peut être appliqué aux champs de charh, varchar et de texte de la table.
  2. Il prend en charge les moteurs de stockage InNODB et Myisam.
  3. Il est utilisé avec des clauses MATCH () et contre ()

Types de modes de recherche de texte complet

Trois types de recherche peuvent être réalisés en utilisant l'index FullText, qui est expliqué ci-dessous:

1. Mode booléen
Ce type de recherche est utilisé pour les requêtes qui contiennent des opérateurs booléens, tels que l'opérateur inférieur à (''), plus le signe ('+'), moins le signe ('-'), Double Quotes («»), Wildcard Operator ( '*), etc.

2. Mode du langage naturel
Le type de recherche par défaut interprète la chaîne de recherche comme une phase littérale.

3. Mode d'extension de requête
La recherche est effectuée deux fois dans ce type de recherche. La deuxième recherche est appliquée au résultat de la première recherche pour découvrir la sortie de recherche la plus pertinente.

Conditions préalables

Créez une table avec des données dans une base de données MySQL pour vérifier l'utilisation de la recherche de texte complet dans MySQL. Ouvrez le terminal et connectez-vous au serveur MySQL en exécutant la commande suivante:

$ sudo mysql -u racine

Exécutez la commande suivante pour créer une base de données nommée test_db:

Créer une base de données test_db;

Exécutez la commande suivante pour sélectionner la base de données:

Utilisez test_db;

Exécutez la requête suivante pour créer un tableau nommé clients avec cinq champs:

Créer des clients de table (
id int not null clé primaire,
nom varchar (30) pas null,
Email Varchar (50),
adresse du texte,
contact_no varchar (15));

Exécutez la requête d'insertion suivante pour insérer quatre enregistrements dans le clients tableau.

Insérer dans les valeurs «Clients» («id», «nom», «e-mail», «adresse», «contact_no»)
('4001', 'Laboni Sarkar', 'Laboni @ gmail.com ', '34, dhanmondi 9 / a, dhaka.',' 01844767234 '),
('4002', 'Tahsin Ahmed', 'tahsin @ gmail.com ',' 123/1, Jigatola, Dhaka.',' 01599348742 '),
('4003', 'Hasina Sarkar', 'Hasina @ gmail.com ',' 280, Shantibagh, Dhaka.',' 01600934874 '),
('4004', 'Mehrab Ali', 'Ali @ Yahoo.com ', '78, jigatola, dhaka.',' 01727863459 ');

Exécutez la commande suivante pour ajouter l'index complet pour le adresse champ du clients tableau:

Alter Table Clients Ajouter FullText (adresse);

Exécutez la commande suivante pour vérifier la liste des index définis du clients tableau:

Afficher l'index des clients;

Sortir
La sortie suivante montre que deux index existent pour le clients tableau. L'un est l'index Btree qui a été défini par défaut pour le champ principal, et un autre est l'index FullText qui a été défini plus tard pour le adresse champ:

Utilisations de la recherche de texte complet

La recherche dans le tableau à l'aide de différents modes de l'index FullText a été affichée dans ce tutoriel.

Recherche de texte complet en mode booléen

La requête de sélection suivante recherchera le mot 'Dhanmondi' dans le adresse champ du clients table en mode booléen. Le clients Le tableau ne contient qu'un seul enregistrement correspondant à ce critère:

Sélectionnez * chez les clients où correspondre (adresse) contre («Dhanmondi» en mode booléen);

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente:

Exécutez la requête de sélection suivante pour rechercher les deux mots, 'Dhaka ' et 'Jigatola ' dans le adresse champ du clients Tableau en utilisant l'index complet en mode booléen. Il y a deux lignes dans le clients table qui contiennent les deux mots, 'Dhaka ' et 'Jigatola ':

Sélectionner * parmi les clients
Où correspondre (adresse) contre ('dhaka + jigatola' en mode booléen);

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente. La sortie montre que le adresse le champ contient 'Dhaka ' et 'Jigatola ':

Exécutez la requête de sélection suivante pour rechercher les lignes de la table des clients qui contiennent le mot 'Dhaka ' mais ne contient pas le mot 'Jigatola ' dans le adresse champ du clients Tableau en utilisant l'index complet en mode booléen. Deux lignes existent dans le clients Tableau qui correspond aux critères:

Sélectionnez * parmi les clients où correspondre (adresse) contre ('dhaka -jigatola' en mode booléen);

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente. La sortie montre le adresse le champ contient 'Dhaka ' mais non 'Jigatola ':

Recherche de texte complet en mode langage naturel

Exécutez la commande suivante pour ajouter l'index complet pour le nom champ du clients tableau:

ALTER TABLE Les clients Ajouter FullText (nom);

La requête de sélection suivante recherchera le mot 'Sankar ' dans le nom champ du clients Tableau en mode langue naturelle. Le clients Le tableau contient deux enregistrements correspondant à ce critère:

Sélectionner * parmi les clients
Où correspondre (nom) contre («sarkar» en mode langage naturel);

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente. Les lignes qui contiennent le 'sarkaR 'valeur dans le nom Le champ a été montré dans la sortie:

Recherche de texte complet en mode d'extension de requête

La requête de sélection suivante recherchera le mot 'Laboni ' dans le nom champ du clients Tableau en mode d'extension de requête. Le clients Le tableau contient deux enregistrements correspondant à ce critère:

Sélectionner * parmi les clients
Où correspond à (nom) contre ("Laboni" avec l'expansion de la requête);

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente. Dans la sortie, le champ de nom de la première ligne contient le mot 'Laboni ' avec un autre mot, 'Sarkar ', Et le champ de nom de la deuxième ligne contient le mot correspondant, 'Sarkar '.

Déposer l'index de texte complet

Exécutez la commande suivante pour supprimer l'index complet du nom champ:

Nom d'index des clients de la table alter le nom;

Exécutez la commande suivante pour vérifier la liste d'index actuelle du clients table après avoir retiré l'index complet du nom champ:

Afficher l'index des clients;

Sortir
La sortie suivante apparaîtra après avoir exécuté la requête précédente. La sortie montre que le clients le tableau contient un index btree pour le identifiant champ et un texte complet pour le adresse champ:

Conclusion

Les différentes façons de rechercher du contenu dans un tableau à l'aide de l'index FullText ont été affichés dans ce tutoriel pour aider les nouveaux utilisateurs de MySQL à apprendre les utilisations de la recherche de texte complet dans MySQL. De plus, les fonctionnalités complètes de l'index FullText ont été discutées. Nous espérons que vous avez trouvé cet article utile. Découvrez d'autres articles sur les conseils pour plus de conseils et de tutoriels.