Optimisation de résultats de recherche MySql

Résolu/Fermé
ensixte - 23 févr. 2009 à 15:31
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 - 27 févr. 2009 à 02:35
Salut
Je voudrais optimiser les résultats d'une recherche avec MySql
voila je voudrais que le moteur de recherche sois avec "Or" mais le souci avec Or c'est que si tu tape comme recherche " Toto Tata Tito " la requette dans la base de données généré sera :
"Where like %tata% or like %toto% or like %tita% "
Mon Problème est : si un utilisateur tape comme recherche "toto tata" le premier résultat ne serais pas surement celui qui contiens "tata toto" puisque quand je le fais le "Or" l'Ordre n'est pas en fonction des Mots les plus trouvés ! alors la recherche "tata toto " peux retourner comme résultat :
" 1- tata est dans la cuisine 2-toto est dans le jardin 3-tata et toto sont dans la cuisine 4- .......... ... "
alors que d'après la recherche le premier résultat qui devrais être affiché en premier c'est celui qui correspond le plus a la recherche c'est à dire le "3-tata et toto sont dans la cuisine" Alors comment faire pour régler ce problème ? Merci pour votre aide .
A voir également:

8 réponses

aucune solution ? !! :p
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
23 févr. 2009 à 23:29
Pourquoi faire une recherche si tu sais qu'ils sont dans la cuisine et dans le jardin ? O_o
XD désolé c'était plus fort que moi...

Bon, plaisanterie à part, tu ne peux pas simplement ajouter une case à cocher pour dire au script de prendre en compte AND au lieu de OR si besoin ?

genre :
Recherche :
[_______________]
[] Rechercher la phrase exacte

en gros ça ferait comme les guillemets dans un moteur de recherche comme google.
0
j'ai deja pensé a ça mais ça serais pas très utile sur mon site puisque les recherches effectuées sont dans la majorité des cas ( environ 80% ) avec du faux orthographe :p !! c'est pour ça que je cherche une solution pour ordonner les résultats avec un "OR" ^^ , merci pour la réponse :) .
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
24 févr. 2009 à 00:09
Ok lol ^^

J'ai juste une idée en tete mais je ne sais apas du tout si c'est faisable... Ce serait de compter le nombre de mots, les chercher dans les articles et compter le nombre d'occurence pour chacun d'entre eux et retourner en premier les résultats comportant le plus grand nombre d'occurences pour la plupart des mots (voire même pour les plus longs simplement...).

Et désolé de ne pas pouvoir t'aider davantage.
0
Salut,
j'avais bien essayé mais j'y suis pas parvenu !! :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aucune astuce ? !!
0
vola je met à jour ma Question :

" Comment faire Un "order By" des résultats en Fonction du Nombre de mots clefs trouvées dans le Champ"

Merci !
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
27 févr. 2009 à 00:19
Et bien tu pourrais compter le nombre de chaque résultat, enregistrer dans une table "recherches" un champs du nom de la requete (en retirant les accents, espaces, etc...) le nombre de résultats de chaque mot dans un champs de même nom pour chacun, puis utiliser cette table dans le "SELECT * from recherches WHERE requete_sans_accents="$requete-sans-accents" ORDER BY $nombre DESC";

Non ? Je dis ça comme ça, c'set une idée fiolle qui me passe par la tête. ^^

et à la fin de l'affichage, supprimer les enregistrements dans la table, ou bien lors d'une prochaine requete, juste avant de lancer la nouvelle.
0
mdr !! :p C'est vrai que C'est une idée impeu folle ! mais je vien de trouver la solution qui se résume sur une ligne en SQL !!:| !!!

$SQL= " SELECT * , MATCH (mots_clefs) AGAINST ('%$recherche%') FROM table WHERE MATCH (mots_clefs) AGAINST ('%$recherche%') LIMIT 20";

la variable$recherche étant la chaine de caractères la recherche koi .. ! et mots_clefs c'est le nom du champ , et voial ça marche !! :D ça retourne les résultats en fonction du nombre d'occurrences ! Merci Torkass !! :)
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
27 févr. 2009 à 02:35
Ah ! Même si je n'ai pas eu la solution exacte, je suis ravis d'avoir pu t'orienter. :)
Et puis ça risque de me servir, alors merci bien ! ^^
0