requête mysql

Nouveau WRInaute
bonjour,

je suis nouvelle ici, j'ai besoin d'aide pour une requete php/mysql.

merci aux courageux de leur précieuse aide.

j'aimerais d'après une requete (ex : mot1 mot2 mot3) obtenir les résultats mais dans un ordre de pertinence,

c'est à dire en 1er les lignes contenant tous les mots puis les lignes contenant 2 mots puis les lignes contenant 1 mot.

j'ai pensé à utiliser UNION mais c'est un vrai casse tête car il y a plusieurs combinaisons :

(SELECT * FROM mabase WHERE mot LIKE '%mot1%' AND '%mot2%' AND '%mot3%') UNION (SELECT * FROM mabase WHERE mot LIKE ('%mot1%' AND '%mot2%') OR ('%mot1%' AND '%mot3%') OR ('%mot2%' AND '%mot3%')) UNION ...............

de plus il faut que la requete puisse être automatisée (en fonction du nb de mots tapés dans le moteur).

quelqu'un a t'il une idée ?

merci beaucoup.
 
WRInaute discret
Bonjour,

ça me semble effectivement loborieux à réaliser en SQL (et surement pas très optimisé).
Pourquoi ne pas construire un index avec un vrai moteur d'indexation tenant compte des règles que tu souhaites utiliser pour la recherche.

Tu peux peut-être utiliser directement un moteur d'indexation comme swish-e (en perl) qui est rapide et permet de bien configurer l'algorithme de classement des résultats de recherche comme on le souhaite...
 
H
Haq
Guest
Tu rajoutes une clef fulltext, tu fais la requête fulltext et le tour est joué... ça sert à ça.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut