Personnalisation de la pertinence de la recherche en texte intégral dans MySQL pour améliorer les champs
Dans MySQL, la recherche en texte intégral fournit un outil puissant pour récupérer des résultats pertinents à partir de grands ensembles de données. Cependant, lorsque vous travaillez avec plusieurs champs dans une requête de recherche, il peut être souhaitable de donner la priorité à certains champs pour accroître leur influence sur le score de pertinence global. Cet article explore les techniques permettant de manipuler la pertinence de la recherche en texte intégral afin de rendre un champ plus significatif qu'un autre.
Défi : modifier la pertinence en fonction de l'importance du champ
Envisagez un scénario dans lequel une base de données contient deux colonnes : mots-clés et contenu. Un index de texte intégral a été créé dans les deux colonnes. L'objectif est de garantir que les lignes contenant un mot-clé spécifique dans la colonne des mots-clés sont mieux classées en termes de pertinence par rapport aux lignes contenant le même mot-clé dans la colonne de contenu.
Solution : création d'index personnalisés
Pour réaliser cette personnalisation, MySQL offre la possibilité de créer plusieurs index de texte intégral, permettant d'isoler les calculs de pertinence pour chaque champ. Dans ce cas, trois index peuvent être établis :
Requête avec pertinence pondérée
Une fois les index en place, une requête modifiée peut être utilisée pour pondérer la pertinence de chaque domaine. Au lieu de s'appuyer sur un seul score de pertinence, la requête calcule désormais deux scores distincts :
Le score de pertinence final est ensuite calculé en appliquant une pondération souhaitée à chaque score, par exemple :
<code class="sql">SELECT id, keyword, content, MATCH (keyword) AGAINST ('watermelon') AS rel1, MATCH (content) AGAINST ('watermelon') AS rel2 FROM table WHERE MATCH (keyword,content) AGAINST ('watermelon') ORDER BY (rel1 * 1.5) + (rel2) DESC</code>
Dans cette requête, la pertinence des correspondances dans le champ mots-clés est pondérée 1,5 fois supérieur aux correspondances dans le champ de contenu.
Considérations
Il est important de noter que la création d'index supplémentaires a un impact sur l'utilisation du disque et la consommation de mémoire. L'analyse comparative des performances est cruciale pour déterminer le nombre et la pondération optimaux des index pour une application spécifique. La mise en œuvre d'index personnalisés et de calculs de pertinence pondérée fournit un mécanisme puissant pour améliorer les capacités de recherche en texte intégral dans MySQL et personnaliser la pertinence des résultats de recherche en fonction de l'importance du champ.
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!