[SQL] requete pour moteur de recherche...

Nico -  
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
j'aimerais améliorer les résultats retournés sur mon moteur de recherche.
Si l'utilisateur tape "chaussure sport", je retourne tous les résultats pour les descriptions qui contiennent soit "chaussure" soit "sport", mais, l'idéal, serait de retourner les descritpions qui contienne : "chaussure sport", puis "chaussure" et "sport", puis "chaussure" ou "sport", tout ça réalisé par la même requete MySQL...
Est que quelqu'un aurait une idée?
Merci à tous pour votre participation.
Nico.

5 réponses

metalque89 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   2
 
bonjour,

Tu peux faire une requête pour chacun de tes 3 filtres et faire une 4ieme requête qui reprend le résultat de ces requêtes. D'abord tu reprends le résultat de ta recherche "chaussure sport" puis le résultat des autres requêtes que tu ajoute par l'instruction UNION ALL SELECT, ça fonctionne comme ça:
SELECT (champs requete1) FROM requête1 UNION ALL SELECT (champs requete2) FROM requête2...
Tu dois avoir autant de champs sélectionnés pour chaque SELECT!

Maintenant si l'utilisateur tape 3 mots tu devras avoir plus de 10 requêtes (rapide calcul de tête :)) donc c'est pas génial.
Dans ce cas le mieux serait sans doute de passer par VBA.

J'espère t'avoir aidé.
0
Nico
 
Merci pour ta réponse.
Je vais essayer avec l'instruction UNION, j'y avais pas pensé, mais j'espère que c'est pas trop lourd coté perf...
D'autres idées ?
0
Nico
 
J'ai testé la requte ci dessous :

SELECT * FROM boutique where description like '%chaussure sport%'
UNION ALL
SELECT * FROM boutique where description like '%chaussure%'
UNION ALL
SELECT * FROM boutique where description like '%sport%'

ça me retourne bien tous les sites qui contienne "chaussure sport", "chaussure" et "sport", par contre, il ne sont pas présentés dans l'ordre de pertinence, en effet, j'aimerai avoir dans les 1er resultats les sites contenant "chaussure sport" puis les sites contenant "chaussure" ET "sport", puis les sites contentant "chaussure" OU "sport".
C'est ce classement que je n'arrive pas à faire.
Si quelqu'un a une idée, un grand merci d'avance.

Nico.
0
Nico
 
j'ai cherché, mais pas trouvé, quelqu'un aurait il une idée pour mon post ci dessus?
0

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

Posez votre question
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Salut,

vous devez definir une sorte de "fonction d'évaluation de pertinence" puis faire le trie (order by) selon cette fonction.
Autrement vous n'avez pas sur quoi se basé.

Réflichissez à faire une view avec des champs aupplémentaires.
0