Maison > base de données > tutoriel mysql > le corps du texte

Comment personnaliser la pertinence de la recherche en texte intégral dans MySQL en donnant la priorité à des champs spécifiques ?

Linda Hamilton
Libérer: 2024-11-04 06:52:30
original
558 Les gens l'ont consulté

How to Customize Full-Text Search Relevance in MySQL by Prioritizing Specific Fields?

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 :

  • Index 1 : Mots clés uniquement (par exemple, idx_keywords_fulltext)
  • Index 2 : Contenu uniquement (par exemple, idx_content_fulltext)
  • Index 3 : mots clés et contenu combinés (par exemple, idx_keywords_content_fulltext)

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 :

  • rel1 : Pertinence basée sur l'index idx_keywords_fulltext
  • rel2 : Pertinence basée sur l'index idx_content_fulltext

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal