Maison >base de données >tutoriel mysql >Comment implémenter le classement « Meilleure correspondance » dans les recherches MySQL Live ?

Comment implémenter le classement « Meilleure correspondance » dans les recherches MySQL Live ?

DDD
DDDoriginal
2024-12-29 14:16:12594parcourir

How to Implement

Ordre MySQL par « Meilleure correspondance »

Lors de l'exécution de recherches en direct dans MySQL, l'ordre par défaut des résultats basé sur l'ordre alphabétique peut ne pas fournir les résultats les plus pertinents. Pour donner la priorité aux résultats où la chaîne de recherche apparaît plus près du début du mot, envisagez de mettre en œuvre un classement de « meilleure correspondance ».

Classement par position de départ

Pour placer les résultats où la chaîne de recherche apparaît en premier au début du mot, vous pouvez utiliser une approche de classement à plusieurs niveaux.

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

Dans ce requête :

  • L'expression CASE attribue une priorité en fonction de l'endroit où la chaîne de recherche correspond dans le mot.
  • Les résultats sont classés avec les correspondances commençant au début (priorité 1) apparaissant en premier.

Ordre par position dans Word

Alternativement, pour trier les résultats en fonction de la position de la chaîne de recherche dans le mot, la fonction LOCATE() peut être utilisée.

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

Avec cette approche :

  • LOCATE() détermine la position de départ de la chaîne de recherche dans le mot.
  • Les résultats sont classés selon cette position, les positions inférieures (plus proches du début) étant classées plus haut.

Gestion des critères de départage

Dans les cas où plusieurs mots partagent la même position dans la chaîne de recherche, vous souhaiterez peut-être introduire un critère de tri secondaire.

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

En ajoutant un autre critère de classement (par exemple, le tri alphabétique), vous pouvez briser les égalités et assurer un classement cohérent. commande.

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