Recherche par mot clé

Résolu
kerfahi
Messages postés
96
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2013
- 4 avril 2012 à 10:45
kerfahi
Messages postés
96
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2013
- 24 avril 2012 à 10:06
bonjour,
je veux faire une requête SQL qui permet de trouver une liste de document en tapant dans la barre de recherche les mots clé(chaque document a au max 5 mots clé)la requête doit chercher de nombre variable de mot clé entre 1 et 5 et affiche eux qui ont plus de mots cle???
merci

3 réponses

tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
24 avril 2012 à 01:12
Bonjour,

Ce que je ferai :
Créer une fonction table type "Split" avec comme séparateur espace. Je vais l'appeler Fn_Split. Si tu peux, crée une fonction Clr (plus rapide).
Si tu stockes les mots clés sous forme de phrase par document, voici le code :
DECLARE @Recherche varchar(255) --Texte dans barre de recherche

Select E.DocNom FROM 
(Select A.DocNom, B.Split from Documents A CROSS APPLY dbo.fn_Split(A.Mot_Cle) B --Liste mots clés par document
inner join (Select C.Split from dbo.fn_split(@Recherche) C) D --Liste des mots clé recherche
ON B.SPlit = D.Split) E
GROUP BY E.DocNom
ORDER BY Count(E.Split) DESC


Ainsi les premiers documents à sortir sont ceux qui correspondent le mieux au critère de recherche quelque soit l'ordre des mots.


Yann
3
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
24 avril 2012 à 01:14
Désolé il manque une parenthèse fermante à la requête B. Si tu as besoin d'aide, poste.


Yann
0
kerfahi
Messages postés
96
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2013
2
24 avril 2012 à 10:06
merci pour l'aide
0