2009-02-14 6 views
4

J'ai une table avec des noms de films, et je veux être en mesure de rechercher un film dans cette table. Mais je veux être en mesure de rechercher une partie du titre, et toujours retourner un résultat. Par exemple, s'il y a un enregistrement avec le nom "Le quantum de consolation", alors je veux être capable de faire une recherche de "consolation quantique", ou même "007: consolation quantique" et je veux trouver cet enregistrement. Y a-t-il un moyen de faire cela?mysql recherche par mot clé

EDIT Et comment trier selon les correspondances? C'est-à-dire que la ligne qui correspond le plus devrait être retournée en premier.

Répondre

5

Utilisez un MySQL Full Text Search en mode booléen. Si vous faites cela lorsque vous recherchez '007: quantum solace' car il contient au moins un résultat correspondant dans la colonne, il sera affiché, vous pouvez ensuite trier par pertinence.

SELECT *, MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) AS rank 
FROM films 
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) ORDER BY rank DESC 
1

Regardez le full text search capabilities of MySQL. Une fois que vous configurez un index de texte intégral, vous pouvez faire des requêtes comme celui-ci:

SELECT * 
FROM movies 
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) 
Questions connexes