Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2005, 09h00   #1
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Par défaut Utilisation de soundex

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')
me renvoie 'K350', 'C350', 'K350', ce qui dans ce cas m'embête bien.
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')
qui renvoie 'A235', 'A235', 'A235' ce qui me convient très bien.
Cela me paraît trop simple, voire simpliste comme contournement !!! Avez-vous des suggestions ?

--
Cordialement
Christophe Charron
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 09h41   #2
Membre habitué
 
Inscription : octobre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 145
Points : 149
Points : 149
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,
ren0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 10h37   #3
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Bonjour,
et merci pour ta célérité.

Citation:
Envoyé par ren0
Voici un bon article qui t'expliquera les basiques :
http://sqlpro.developpez.com/cours/soundex/#L4
Je vais de ce pas le lire.
Citation:
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.
Une petite recherche google sur metaphone me renvoie entre-autre un lien qui dit
"... 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:
- soit tu implémente ta méthode soundex dans ton appli, qui fera le calcul est passera le résultat à la BD
Que vaut la mienne de préfixer avec un A ?
Citation:
- 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.
Houla, il suffit, il suffit ... n'oublions pas que je débute !!!!

Christophe
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 10h51   #4
Membre habitué
 
Inscription : octobre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 145
Points : 149
Points : 149
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...
ren0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h03   #5
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par ren0
Pour être honnête, ta méthode de préfixage par un A, qui fonctionne dans ton cas, ça fait un peu bricoleur, non ?
Pour être honnête, je trouve aussi
C'est bien pour cela que je consulte !!
Citation:
Dis moi si ça tiens le coup à grande échelle...
Justement, comment construire un jeu d'essai "intelligent" et "pertinent"

Christophe
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h31   #6
Membre habitué
 
Inscription : octobre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 145
Points : 149
Points : 149
jette un oeil à tes messages privés
ren0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 11h21   #7
Membre habitué
 
Inscription : octobre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 145
Points : 149
Points : 149
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.
ren0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 18h29   #8
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par ren0
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.
Personne n'a implémenté en udf l'ago cité ici : http://sqlpro.developpez.com/cours/soundex/#L4
Je suis donc toujours le premier à vouloir demander la lune ?
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h31.


 
 
 
 
Partenaires

Hébergement Web