[MySQL] requete pour moteur de recherche ?

Fermé
Nico - 11 nov. 2008 à 08:37
atspinto Messages postés 338 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 8 août 2014 - 11 nov. 2008 à 22:05
Bonjour à tous,

Je recherche la meilleur requete possible pour mon moteur de recherche, qui a ce jour rame un peu...

j'ai essayé quelques requetes et à l'heure actuelle je me suis arreté sur cette requete :

(SELECT sites.* FROM sites WHERE CONCAT(nom, description) LIKE '%$mot%') UNION (SELECT sites.* FROM sites WHERE $condition_union_and) UNION (SELECT sites.* FROM sites WHERE $condition_union_or)
avec par exemple, si tape "meilleur du web" :
$condition_union_and = " CONCAT(nom, description) LIKE '%meilleur% and CONCAT(nom, description) LIKE '%du% and CONCAT(nom, description) LIKE '%web% '";
et
$condition_union_and = " CONCAT(nom, description) LIKE '%meilleur% or CONCAT(nom, description) LIKE '%du% or CONCAT(nom, description) LIKE '%web% '";

Côté qualité des résutats retournés, je suis satisfait, par contre, coté perf, c'est pas terrible, et si on tape une phrase avec une dizaine de mots, j'écroule ma base...

Bref, je voudrais avoir votre avis, et vos conseils.

Merci par avance.
Nico.
A voir également:

2 réponses

il n'y a pas un expert MySQL sur ce forum ?

Nico.
0
atspinto Messages postés 338 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 8 août 2014 27
11 nov. 2008 à 22:05
slut.
Je suis pas un expert MySQL, juste un simple utilisateur.

Pour fonctionner dans le meme sens ke ta precedente requete, apres avoir eu le mot :
- divise le en fonction des espaces avec un explode
- tu crée un nouveau mot : "meilleur du web" => "%meilleur%du%web%"
- et tu fais ta requete dans le genre : SELECT sites.* FROM sites WHERE nom LIKE '$mot' or description LIKE '$mot';

Tu devrais obtenir un resultat dans un bon délai.
Fais moi part du resultat.
0