|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Bonjour,
j'ai un petit problème avec soundex, mais est-ce un problème ou moi qui n'utilise pas la bonne fonction, je ne sais pas et je compte sur votre retour d'expérience. Tout le monde ne connaissant pas l'orthographe de la capitale du B.... ?, je pensais implémenter une recherche avec "soundex" pensant qu'une saisie 'Kautonnoue','Cotonou', ou 'Kotonou' me renverrai un résultat identique. Or un Code :
SELECT soundex('Kautonnoue'),soundex('Cotonou'),soundex('Kotonou') J'ai trouvé un moyen détourné, limite foireux à mon avis pour pallier cette "déficience" : préfixer avec un "A" ce qui donne Code :
SELECT soundex('AKautonnoue'),soundex('ACotonou'),soundex('AKotonou') Cela me paraît trop simple, voire simpliste comme contournement !!! Avez-vous des suggestions ? -- Cordialement Christophe Charron |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
Bonjour,
Le probleme avec les soundex en général, c'est qu'ils s'appuient sur un algo défini à la base par et pour les anglo-saxons. Donc, naturellement, comme la phonétique française est différente de la phonétique anglaise, il peut y avoir des petits soucis... Voici un bon article qui t'expliquera les basiques : http://sqlpro.developpez.com/cours/soundex/#L4 Ce qu'il te faut faire c'est soit ajouter une colonne soundex (si tu peux utilise plutôt métaphone, + performant) dans ta table. Tu procederas aux recherche directement sur cette colonne => gain de perf car pas besoin de recalculer le soundex à chaque fois. Pour le calcul du soundex, deux choix : - soit tu implémente ta méthode soundex dans ton appli, qui fera le calcul est passera le résultat à la BD - tu implemente une UDF pour pouvoir utiliser ton soundex "maison" directement dans le SGBD. (ex : SELECT SOUNDEX_FR(toto) FROM titi) Il suffit de reprendre les algos de l'article cité ci dessus. HTH, |
|
|
00
|
|
|
#3 | ||||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Bonjour,
et merci pour ta célérité. Citation:
Citation:
"... metaphone fonctionne en anglais, et n'utilise pas les spécificités de la langue française. Les résultats sur des termes français peuvent être des plus aléatoires." Pour le calcul du soundex, deux choix : Citation:
Citation:
Christophe |
||||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
Pour être honnête, ta méthode de préfixage par un A, qui fonctionne dans ton cas, ça fait un peu bricoleur, non ?
En plus rien ne te dit que ça ne va pas t'apporter d'autre incohérence sur d'autre mot... D'un autre côté, je viens de faire quelque tests, et ça semble fonctionner ! Chapeau pour ton astuce... Dis moi si ça tiens le coup à grande échelle... |
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
C'est bien pour cela que je consulte !! Citation:
Christophe |
||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
jette un oeil à tes messages privés
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : octobre 2004 Messages : 145 ![]() |
Aprés investigation, il s'avère que la méthode de préfixage par A revient à faire une recherche sur la partie numérique du soundex (donc tout sauf la première lettre). Donc une qualité de résultat relativement mauvaise.
Il faut donc combiné les méthodes de recherche : textuelle, rapprochement textuel, phonétique pour obtenir le meilleure résultat. Peut-être que l'implémentation en udf de l'algo de soundex_fr fourni dans l'article de sqlpro cité plus haut est à envisager. |
|
|
00
|
|
|
#8 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
Je suis donc toujours le premier à vouloir demander la lune ? |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com