Effectuer une recherche plein texte basique
Dans cette étape, vous allez effectuer des recherches de texte intégral de base sur la table articles en utilisant la clause MATCH AGAINST. C'est la manière fondamentale d'utiliser l'index de texte intégral que vous avez créé.
Assurez-vous que vous êtes toujours dans le shell MySQL et que vous utilisez la base de données search_db. Sinon, sélectionnez la base de données :
USE search_db;
La clause MATCH AGAINST est utilisée dans la clause WHERE d'une instruction SELECT. La syntaxe de base est :
SELECT column1, column2, ...
FROM table_name
WHERE MATCH (column_list) AGAINST ('search_term');
Ici, column_list est une liste séparée par des virgules des colonnes incluses dans l'index de texte intégral (dans notre cas, title et content), et 'search_term' est le mot ou la phrase que vous recherchez.
Recherchons les articles qui contiennent le mot "MySQL" :
SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST ('MySQL');
Cette requête sélectionne les colonnes id, title et content de la table articles où les colonnes title ou content correspondent au terme "MySQL".
Vous devriez voir la sortie suivante :
+----+--------------------------+---------------------------------------------------------------------+
| id | title | content |
+----+--------------------------+---------------------------------------------------------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. |
+----+--------------------------+---------------------------------------------------------------------+
3 rows in set (0.00 sec)
Les trois articles sont retournés car ils contiennent tous le mot "MySQL".
La recherche de texte intégral fournit également un score de pertinence, indiquant à quel point chaque ligne correspond au terme de recherche. Vous pouvez inclure ce score dans votre instruction SELECT :
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles;
Cette requête ajoute une colonne nommée relevance qui affiche le score pour chaque ligne.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
Vous pouvez trier les résultats par pertinence pour voir les meilleures correspondances en premier :
SELECT id, title, content, MATCH (title, content) AGAINST ('MySQL') AS relevance FROM articles ORDER BY relevance DESC;
Cette requête trie les résultats en fonction du score de relevance par ordre décroissant.
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| id | title | content | relevance |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
| 1 | MySQL Full-Text Search | This article explains how to use full-text search in MySQL. | 1.34832763671875 |
| 2 | Indexing in MySQL | Learn about different types of indexes in MySQL, including full-text indexes. | 0.5215404033660889 |
| 3 | Optimizing MySQL Queries | Tips and tricks for optimizing your MySQL queries for better performance. | 0.5215404033660889 |
+----+--------------------------+---------------------------------------------------------------------+--------------------+
3 rows in set (0.00 sec)
Dans cette étape, vous avez appris à effectuer des recherches de texte intégral de base en utilisant MATCH AGAINST et comment récupérer et trier les résultats par pertinence. Dans la prochaine étape, vous explorerez des options de recherche plus avancées en utilisant le mode booléen.