Maison  >  Article  >  base de données  >  Comment augmenter la pertinence de la recherche plein texte MySQL pour des champs spécifiques ?

Comment augmenter la pertinence de la recherche plein texte MySQL pour des champs spécifiques ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 03:02:03472parcourir

How to Boost Relevance in MySQL Fulltext Search for Specific Fields?

Comment améliorer la pertinence de la recherche plein texte MySQL pour des champs spécifiques

Supposons que vous disposiez d'une base de données avec deux colonnes : mots-clés et contenu. Vous avez créé un index de texte intégral couvrant les deux colonnes. Mais vous souhaitez donner la priorité aux lignes contenant des mots spécifiques dans la colonne des mots-clés par rapport à celles contenant les mêmes mots dans la colonne du contenu.

Solution :

Créez trois index de texte intégral :

  1. Index sur la colonne de mots-clés uniquement
  2. Index sur la colonne de contenu uniquement
  3. Index sur les colonnes de mots-clés et de contenu

Ensuite, modifiez votre requête comme suit :

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

Explication :

  • rel1 et rel2 calculent respectivement la pertinence de votre requête dans les colonnes de mots-clés et de contenu.
  • En multipliant rel1 par 1,5, vous accordez un poids plus élevé aux mots-clés.
  • La clause WHERE utilise toujours l'index composite sur les mots-clés et le contenu pour garantir le renvoi des résultats.
  • Cette technique vous permet de contrôler le rappel (quels résultats sont renvoyés) et la pertinence (comment la correspondance est hiérarchisée), en donnant plus d'importance à des champs spécifiques.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn