OVH Cloud OVH Cloud

SOUNDEX et DIFFERENCE

6 réponses
Avatar
Zoury
Bonjour à tous ! :O)

J'aimerais savoir, selon votre expérience, si ces fonctions sont fiables ou
non. Surtout que nous ne parlons pas la même langue que celle pour laquelle
elle ont été conçue...
J'aurais tendance à penser que ces fonctions sont peu fiable, mais c'est
peut-être un mauvais jugement. :O/

Je m'en suis servi récemment pour comparer le nom de personne entre deux
champs alors qu'un des champs contenait des accents et l'autre non..

par exemple :
---
create table #t(s varchar(12), ss varchar(12))
go
insert into #t(s, ss) values('Adele', 'Adèle')
insert into #t(s, ss) values('Marie-Andree', 'Marie-Andrée')
insert into #t(s, ss) values('Helene', 'Hélène')
insert into #t(s, ss) values('Edith', 'Édith')
go
select s NomSansAccent,
ss NomAvecAccent,
soundex(s) ValeurSoundexSansAccent,
soundex(ss) ValeurSoundexAvecAccent,
difference(s, ss) ValeurDiff_S_SS,
difference(ss, s) ValeurDiff_SS_S
from #t
go
drop table #t
go
---

J'ai trouvé ça très pratique..
Toutefois j'ai déjà lu sur google un cas où ValeurDiff_S_SS et
ValeurDiff_SS_S retournait deux valeurs différentes pour les même chaines
testées.... assez étrange. ;O)

En bref.. est-ce une fonction fiable? son usage est-elle recommandé? quand
est il du temps d'exécution requis?
Merci :O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

6 réponses

Avatar
Zoury
je me suis renseigné sur le groupe anglophone pour avoir leur avis et il
semblerait que ce n'est pas fameux dans les autres langues... il est
préférable d'utiliser une solution de rechange du genre se créer une
fonction Soundex pour la langue française.. ce qui doit être assez complexe
:O)

--
Best Regards
Yanick Lefebvre

"Zoury" a écrit dans le message de
news:
Bonjour à tous ! :O)

J'aimerais savoir, selon votre expérience, si ces fonctions sont fiables


ou
non. Surtout que nous ne parlons pas la même langue que celle pour


laquelle
elle ont été conçue...
J'aurais tendance à penser que ces fonctions sont peu fiable, mais c'est
peut-être un mauvais jugement. :O/

Je m'en suis servi récemment pour comparer le nom de personne entre deux
champs alors qu'un des champs contenait des accents et l'autre non..

par exemple :
---
create table #t(s varchar(12), ss varchar(12))
go
insert into #t(s, ss) values('Adele', 'Adèle')
insert into #t(s, ss) values('Marie-Andree', 'Marie-Andrée')
insert into #t(s, ss) values('Helene', 'Hélène')
insert into #t(s, ss) values('Edith', 'Édith')
go
select s NomSansAccent,
ss NomAvecAccent,
soundex(s) ValeurSoundexSansAccent,
soundex(ss) ValeurSoundexAvecAccent,
difference(s, ss) ValeurDiff_S_SS,
difference(ss, s) ValeurDiff_SS_S
from #t
go
drop table #t
go
---

J'ai trouvé ça très pratique..
Toutefois j'ai déjà lu sur google un cas où ValeurDiff_S_SS et
ValeurDiff_SS_S retournait deux valeurs différentes pour les même chaines
testées.... assez étrange. ;O)

En bref.. est-ce une fonction fiable? son usage est-elle recommandé? quand
est il du temps d'exécution requis?
Merci :O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/




Avatar
Norm
"Zoury" a écrit dans le message de
news:
je me suis renseigné sur le groupe anglophone pour avoir leur avis et il
semblerait que ce n'est pas fameux dans les autres langues... il est
préférable d'utiliser une solution de rechange du genre se créer une
fonction Soundex pour la langue française.. ce qui doit être assez


complexe

Salut Yan

Il existe déjà des algorithmes fait pour la langue francaise.
Quelques liens qui pourrait t'intéresser
http://sqlpro.developpez.com/Soundex/SQL_AZ_soundex.html
http://www.vbfrance.com/code.aspx?ID„96

J'ai déja essayer de convertir tout cela en dotnet. Le résultat ne fut pas
assez concluant pour l'utiliser , encore moins avec des noms de famille. :-(
Les meilleurs résultats dans notre cas fut d'utiliser le soundex SQL.

Norm
Avatar
Zoury
Thanks Norm! Les liens sont très intéressants :O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Fred BROUARD
Attention :

1) soundex n'est pas spécifique à la langue anglaise, mais il n'est pas spécialisé sur la langue française.
2) SOUNDEX est fait pour des noms, pas pour des prénoms, ni des mots.
3) difference est le calcul de la différence de levenshtein c'est à dire le nombre minimum de manipulation à faire pour
passer d'un mot à un autre. Autrement dit son éloignement en temps de traitement...

A +

Zoury a écrit:
Thanks Norm! Les liens sont très intéressants :O)




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Zoury
Salut Fred! Merci pour les précisions! ;O)
Avatar
Norm
> 1) soundex n'est pas spécifique à la langue anglaise, mais il n'est pas


spécialisé sur la langue française.
Voila le pourquoi des algorithmes ont été développés pour la langue
française http://sqlpro.developpez.com/Soundex/SQL_AZ_soundex.html
Voir phonex.

2) SOUNDEX est fait pour des noms, pas pour des prénoms, ni des mots.


Question: fait pour des noms, est-ce que ca veut dire que ca ne marche
pas pour des prénoms?