Maison >base de données >tutoriel mysql >Comment puis-je prioriser la pertinence des recherches en texte intégral MySQL sur plusieurs colonnes ?
Priorité à la pertinence dans la recherche en texte intégral MySQL avec plusieurs colonnes
Dans MySQL, la fonction MATCH() AGAINST() facilite les recherches en texte intégral sur plusieurs colonnes. Par défaut, la pertinence de la recherche est déterminée par l'occurrence combinée des termes correspondants dans toutes les colonnes spécifiées. Cependant, vous pouvez rencontrer des scénarios dans lesquels vous devez prioriser la pertinence en fonction de colonnes spécifiques.
Pertinence par colonne
Pour y parvenir, vous pouvez introduire plusieurs colonnes de pertinence, une pour chaque colonne, comme vous l'avez mentionné. Bien que cette approche garantisse une hiérarchisation précise, elle implique également des recherches redondantes, affectant les performances.
Optimiser la hiérarchisation de la pertinence
Une méthode alternative qui équilibre la hiérarchisation des performances et de la pertinence consiste à ajuster la priorisation formule de calcul de pertinence. Voici une requête modifiée qui intègre un coefficient de pondération pour la colonne de tête :
SELECT * , MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_weight FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY (title_weight + relevance) DESC
Cette requête attribue un poids plus élevé au score de pertinence de la colonne de tête. En ajustant le poids en conséquence, vous pouvez prioriser la pertinence en fonction de colonnes spécifiques.
Bonus : compter les occurrences de mots
Pour compter l'occurrence des termes correspondants dans chaque colonne, vous peut utiliser l'indicateur BOOLEAN MODE dans MATCH() :
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance, MATCH (head) AGAINST ('some words' IN BOOLEAN MODE) AS title_count FROM pages WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) ORDER BY title_count DESC, relevance DESC
La colonne title_count indique combien de fois les termes spécifiés erscheinen dans la colonne de tête. Ces informations vous aident à affiner davantage vos résultats de recherche.
Remarque : Cette approche convient aux versions MySQL 8.0 et supérieures. Pour les anciennes versions, vous devrez peut-être explorer des méthodes alternatives pour hiérarchiser la pertinence et compter les occurrences de termes.
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!