PHP/MySql > Clause LIKE ...

WRInaute passionné
Hello @ tous!

Je veux faire une recherche dans mysql, dans un champ varchar, qui contient des noms d'artistes.

Je voudrais faire une recherche, par exemple que quand on tape "farmer", il me sorte "Mylene Farmer". Pour l'instant, j'ai fait ceci:

WHERE artiste LIKE '%$name%'");

et cela semble fonctionner.

Par contre, si je met "Gislain Farmer", la il me sors pas ma Mylene adoré, alors que je veux qu'il me la trouve!!!

Comment faire?
 
WRInaute passionné
Normal, il va rechercher LIKE %Gislain Farmer%.

Il te faudrait faire un parsing de la chaine de caractère pour dégager le nom "Farmer"...
 
Nouveau WRInaute
mysql

en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer
 
WRInaute discret
Re: mysql

hollenfurst a dit:
en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer

plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'
 
WRInaute passionné
Oui plutot ca effectivement...

Pour optimiser, tu peux toujours t'amuser à tester les SOUNDS mais je n'ai jamais testé...
 
WRInaute accro
Re: mysql

mf a dit:
hollenfurst a dit:
en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer

plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'

Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?
 
WRInaute accro
mr_go a dit:
Ca risque d'être un peu dur ca!

Je passe mon tour pour celle là!

:D

Je ne vois pas non plus comment faire en MySQL, c'est pour ça que je pose la question ;-). La seule que je vois, c'est un second niveau de tri en PHP du résultat SQL..
 
WRInaute passionné
Ah parce que tu voulais tout faire en Mysql d'un coup ?
Ca me parait impossible.


Du reste l'implémentation de ce système doit être assez colossale... bon courage ;)
 
WRInaute discret
Re: mysql

ecocentric a dit:
mf a dit:
hollenfurst a dit:
en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer

plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'

Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?

sans vouloir m'avancé ni avoir la solution sous le coude mais
moi je me suis déja fait un classement avec le mot juste avant la chaine....
je sais pas si c'est clair mais avec un exemplce ca va etre mieux...

genre avec le mot : "mot"
et les champs suivant : "le mot le plus long" et "le moteur thermique"
la liste des resulat sera :
-le mot le plus long (mot juste présent)
-le moteur thermique (chaine présente)

alors je pense que c'est peut être jouable.....
 
WRInaute impliqué
Re: mysql

plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'

Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?

Il faut pour cela utiliser les fonctions de recherche Full Text de MySQL.
 
Discussions similaires
Haut