Maison >base de données >tutoriel mysql >Comment implémenter le classement « Meilleure correspondance » dans les recherches MySQL Live ?
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 :
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 :
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!