[SQL] requete pour moteur de recherche...

Fermé
Nico - 20 avril 2008 à 16:18
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 21 avril 2008 à 11:23
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.
A voir également:

5 réponses

metalque89 Messages postés 33 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 novembre 2008 2
20 avril 2008 à 19:22
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
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
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
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 jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
21 avril 2008 à 11:23
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