|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
Bonjour à tous,
Je bloque sur une requête en sql permettant de faire une recherche, je vous explique : J'ai une table regroupant des articles, avec les champs num, description (etc..) J'essaie de programmer un moteur permettant de saisir plusieurs mots et les rechercher dans le champ description. Mon problème : il ne me faut pas une recherche "exacte", c'est à dire : si je cherche "joint torique" je dois pouvoir trouver aussi bien l'article : "joint torique diamètre 45" que "grand joint pas du tout torique" (j'espère que je suis clair A l'heure actuelle j'utilise ce code qui me permet d'avoir que la recherche "exacte" du groupe de mot : "diam 46 joint torrique" et pas "grand joint pas du tout torique" ![]() Code :
Merci d'avance |
||
|
|
00
|
|
|
#2 | ||||
|
Nouveau Membre du Club
![]() Inscription : mars 2010 Messages : 40 ![]() |
Bonjour,
je viens de faire un petit quelque chose sur le sujet de la similarité entre deux mots. Pour ma part, j'ai opté pour utiliser la notion de distance au sens de Jaro. J'ai donc implémenté cette fonction. Code :
Code :
|
||||
|
|
00
|
|
|
#3 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : mars 2010 Messages : 40 ![]() |
En fait mesurer la similarité de phrases avec cette fonction a ses limites, elle est surtout utilisée dans la correction orthographique, si j'ai bien compris. Dans tes deux exemples, la requête est "joint torique". Le premier terme fait un bon match
Code :
Code :
Ensuite, on a un mauvais score pour Code :
Code :
Une autre idée (sans doute meilleure) serait plutôt que de mesurer numériquement la ressemblance, renvoyer une valeur binaire ; en découpant ta phrase de requête en mots en fonction des espaces, tu peux tester la présence de ces mots à l'intérieur d'une chaîne (tous ces mots, ou un au moins, ou une majorité de mots, ou ...) et renvoyer vrai ou faux. Ton idée avec like est bonne, plutôt que de l'implémenter en SQL, tu peux juste rédiger une fonction en VBA en utilisant des fonctions comme InStr(). Je ne sais pas si c'est super clair. HTH |
||||||||
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
Merci pour t'as réponse, mais je ne pensé pas faire comme ceci, il n'y aurais pas moyen de détecter un espace sur une chaîne de caractères et ainsi de l'affecter à 2 variables ou plus suivant le nombres d'espace ?!
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 805 ![]() |
Bonjour,
Tab(Mots = Split(Reponse, " ")
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
|
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 805 ![]() |
Re,
La fonction Split() retourne un tableau des mots dans une chaine avec comme séparateur un espace. Essaie ça : Code :
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
||
|
|
10
|
|
|
#8 |
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
Question : Que faut-il déclarer comme variable exactement et en quoi? (string, ....)
Merci de ton aide en tout cas
|
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 805 ![]() |
Re,
Je remets le code, car j'ai mis une parenthèse en trop et j'ai merdé dans le nom des variables: Code :
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
||
|
|
10
|
|
|
#10 | ||
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
Toujours pas
![]() Voici mon code : Code :
EDIT : l'erreur est : erreur de compilation ; sub ou function non défini puis le mot "split" deviens surligné ! |
||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 805 ![]() |
Re,
Code :
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
||
|
|
00
|
|
|
#12 | ||||
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
Apparemment Split et Acess 97 ne sont pas compatibles !
Par contre cette fonction pourrait faire la même chose : Code :
EDIT : Utilisation (trouver sur le site ^^) : Code :
|
||||
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 805 ![]() |
Re,
J'ignorais que la fonction Split était incompatible avec Acess 97. Mais tu peux effectivement utiliser la fonction que tu as postée : Code :
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
||
|
|
00
|
|
|
#14 | ||||
|
Invité régulier
![]() Cédric Étudiant Inscription : septembre 2011 Messages : 36 ![]() |
C'est bon ça fonctionne :
je donne des fois que cela serve a quelqu'un d'autre. La procédure de traitement : Code :
L'appel à la procédure (merci pc75 pour ton bout de code) : Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com