Maison >base de données >tutoriel mysql >Comment trier les résultats de recherche MySQL par pertinence : commencer les correspondances en premier ?

Comment trier les résultats de recherche MySQL par pertinence : commencer les correspondances en premier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-30 08:10:10385parcourir

How to Order MySQL Search Results by Relevance: Beginning Matches First?

Classement des résultats MySQL par pertinence : meilleure correspondance en premier

Dans une base de données MySQL, la fonctionnalité de recherche en direct implique souvent de trier les résultats en fonction de leur pertinence. Par défaut, les résultats sont classés par ordre alphabétique, mais que se passe-t-il si nous voulons donner la priorité aux résultats dont la chaîne de recherche correspond au début du mot ?

Pour y parvenir, nous pouvons utiliser l'instruction CASE et la correspondance de modèles pour créer un fichier personnalisé. order :

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY CASE
    WHEN word LIKE 'searchstring%' THEN 1
    WHEN word LIKE '%searchstring' THEN 3
    ELSE 2
  END

Cette requête attribue une priorité de 1 aux résultats où la chaîne de recherche apparaît au début du mot, de 3 à ceux où la chaîne correspond à l'intérieur du mot et de 2 au reste correspondances.

Alternativement, pour trier en fonction de la position de la chaîne correspondante, nous pouvons utiliser la fonction LOCATE :

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)

Cette requête trie les résultats en fonction de la position de la chaîne de recherche dans le mot, en donnant la priorité aux correspondances trouvées plus tôt dans le mot.

Enfin, en cas d'égalité où plusieurs mots correspondent à la chaîne de recherche, nous pouvons ajouter une règle de tri secondaire pour classer par ordre alphabétique les résultats au sein de chaque groupe prioritaire :

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word

En effectuant un classement personnalisé basé sur la position de la chaîne de recherche, nous pouvons améliorer la pertinence des résultats de recherche et améliorer l'expérience utilisateur.

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