Rechercher : dans
Par :

Optimisation de résultats de recherche MySql

Dernière réponse le 27 fév 2009 à 02:35:11 ensixte, le 23 fév 2009 à 15:31:34 
 Signaler ce message aux modérateurs

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 .

Meilleures réponses pour « Optimisation de résultats de recherche MySql » dans :
MySQL – Optimisation Voir L’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
Google Desktop - Rechercher localement des données VoirFiltrer les résultats Consulter un document Afficher différentes versions d’un document Supprimer des éléments de l’index Effectuer une recherche avancée Verrouiller les recherches Il est temps à présent de réaliser votre première...
Supprimer l'historique des recherches VoirLorsque vous utilisez un formulaire de saisie, par exemple dans la barre de recherche de Google, le navigateur affiche la liste des dernières recherches. Pour des raisons de confidentialité ou d'optimisation, vous souhaitez supprimer une ou...
Comment utiliser efficacement les moteurs de recherche ? VoirComment utiliser efficacement les moteurs de recherche ? Si Internet représente une masse d'informations colossale, il peut être fastidieux de trouver le renseignement que vous recherchez. Pourtant, il est possible d’optimiser ses requêtes pour...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...

1

ensixte, le 23 fév 2009 à 21:58:46

Aucune solution ? !! :p

Répondre à ensixte

2

Torkass, le 23 fév 2009 à 23:29:51

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.

Répondre à Torkass

3

ensixte, le 23 fév 2009 à 23:59:10

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 :) .

Répondre à ensixte

4

Torkass, le 24 fév 2009 à 00:09:54

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.

Répondre à Torkass

5

ensixte, le 24 fév 2009 à 16:42:10

Salut,
j'avais bien essayé mais j'y suis pas parvenu !! :s

Répondre à ensixte

6

ensixte, le 24 fév 2009 à 18:58:28

Aucune astuce ? !!

Répondre à ensixte

7

ensixte, le 26 fév 2009 à 23:58:37

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 !

Répondre à ensixte

8

Torkass, le 27 fév 2009 à 00:19:12

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.

Répondre à Torkass

9

ensixte, le 27 fév 2009 à 02:29:11

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 !! :)

Répondre à ensixte

10

 Torkass, le 27 fév 2009 à 02:35:11

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 ! ^^

Répondre à Torkass