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
Libérer: 2024-12-30 08:10:10
original
369 Les gens l'ont consulté

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

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

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

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!

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