Échec de la recherche en texte intégral : solution et améliorations
Votre expérience avec la recherche en texte intégral dans MySQL met en évidence un piège courant. L’utilisation de données limitées peut conduire à des résultats insatisfaisants en raison de la nécessité de varier le texte. Pour obtenir des résultats significatifs, il est essentiel de remplir l'index avec un ensemble diversifié de données.
Mots vides
MySQL maintient des listes de mots vides, qui sont des mots courants tels que comme « est » et « et » qui sont exclus des requêtes de recherche. Par défaut, le serveur utilise une liste précompilée, mais vous pouvez la remplacer par un fichier personnalisé via la variable système 'ft_stopword_file'.
Exemples de requêtes
Pour démontrer une recherche en texte intégral efficace, considérez les requêtes suivantes :
-- Select records matching a single word SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('score' IN BOOLEAN MODE); -- Select records matching multiple words SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('harpoon +article' IN BOOLEAN MODE);
Langage naturel Mode
L'utilisation du MODE LANGAGE NATUREL pondère les mots correspondants en fonction de leur pertinence, offrant ainsi un tri plus significatif des résultats.
SELECT id,prod_name, match( prod_name ) AGAINST ( '+harpoon +article' IN NATURAL LANGUAGE MODE) AS relevance FROM testproduct ORDER BY relevance DESC
Cette requête attribue un score de pertinence à chaque enregistrement, permettant à vous de prioriser les correspondances les plus pertinentes.
Supplémentaire Considérations
En comprenant ces nuances et en fournissant à votre index de recherche une variété suffisante, vous pouvez surmonter les limitations que vous avez initialement rencontrées et exploiter la puissance de la recherche en texte intégral dans MySQL.
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!