Comment effectuer une opération de recherche en texte intégral dans MySQL ?
La recherche en texte intégral est une fonction permettant de trouver des mots-clés dans un champ de texte. Dans MySQL, nous pouvons utiliser la recherche en texte intégral pour améliorer l'efficacité des requêtes et trouver rapidement des résultats pertinents. Cet article explique comment effectuer des opérations de recherche en texte intégral dans MySQL et fournit des exemples de code.
1. Créer un index de texte intégral
Avant d'effectuer une recherche en texte intégral, vous devez d'abord créer un index de texte intégral sur les champs qui doivent être recherchés. Dans MySQL, vous pouvez utiliser l'index FULLTEXT pour implémenter la fonctionnalité de recherche en texte intégral.
Par exemple, dans une table nommée articles, nous souhaitons effectuer une recherche en texte intégral sur le champ de contenu. Vous pouvez exécuter l'instruction SQL suivante pour créer un index FULLTEXT :
ALTER TABLE articles ADD FULLTEXT(content);
2. Effectuer une requête de recherche en texte intégralAprès avoir créé un index en texte intégral, nous pouvons utiliser l'instruction MATCH AGAINST pour effectuer une requête de recherche en texte intégral.
SELECT * FROM articles WHERE MATCH(content) AGAINST('keyword');
SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL full-text search');
L'instruction MATCH AGAINST dans MySQL prend en charge certaines options pour contrôler davantage le comportement de la recherche en texte intégral.
SELECT * FROM articles WHERE MATCH(content) AGAINST('+MySQL -Full text' IN BOOLEAN MODE);
SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL full-text search' WITH QUERY EXPANSION);
Vous pouvez utiliser l'instruction LIMIT pour limiter le nombre de résultats de recherche afin d'améliorer l'efficacité des requêtes.
SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL full-text search') LIMIT 10;
L'instruction MATCH AGAINST dans MySQL peut trier les mots-clés en fonction de leur fréquence d'apparition dans le texte et renvoyer un classement de recherche.
SELECT *, MATCH(content) AGAINST('Recherche en texte intégral MySQL') AS rang FROM articles WHERE MATCH(content) AGAINST('Recherche en texte intégral MySQL') ORDER BY Rank DESC ;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!