2010-01-24 5 views
1

J'ai une requête qui symbolise une phrase sur les espaces et doit rechercher la meilleure correspondance pour la phrase. Il doit retourner ce match en premier. J'essaie de le faire dans une seule requête en utilisant les clauses where. Est-ce possible? J'essaie quelque chose le long de ces lignes:MySQL Classement des résultats par ordre de correspondance de la clause

pour: ma phrase

select name de myTable où name = "mon expression" ou nom comme "% ma phrase%" ou (nom comme "% ma%" et nommez "% phrase%") ou (nom comme "% my%" ou nom comme "% phrase%") limit 5;

Fondamentalement, je veux les cinq premières correspondances dans l'ordre de la clause where. Je sais que par défaut, MySQL évalue les clauses where de manière optimisée. Y a-t-il un moyen de le forcer à les évaluer dans l'ordre? Et si oui, comment puis-je faire en sorte que les résultats soient retournés dans l'ordre de la clause where?

Répondre

1

Utilisez la recherche Fulltext au lieu de cela. C'est beaucoup plus rapide, plus flexible et vous permet de marquer des résultats. Google for more

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC; 
+0

Belle. C'est exactement ce dont j'avais besoin, je ne me suis pas rendu compte que c'était ce que la recherche en texte intégral dans MySQL faisait. Idiot moi de ne pas creuser plus profond, merci! –

Questions connexes