IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Utilisation de soundex


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 : 920
    Points : 606
    Points
    606
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    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,

  3. #3
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 : 920
    Points : 606
    Points
    606
    Par défaut
    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.
    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 :
    - 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 ?
    - 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

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    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...

  5. #5
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 : 920
    Points : 606
    Points
    606
    Par défaut
    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 !!
    Dis moi si ça tiens le coup à grande échelle...
    Justement, comment construire un jeu d'essai "intelligent" et "pertinent"

    Christophe

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    jette un oeil à tes messages privés

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    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.

  8. #8
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 : 920
    Points : 606
    Points
    606
    Par défaut
    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 ?

Discussions similaires

  1. Utilisation de Soundex pour une query
    Par SergioMaster dans le forum Bases de données
    Réponses: 9
    Dernier message: 24/10/2012, 17h17
  2. [MySQL] Fonction Soundex utilisation
    Par overlolo dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/04/2011, 19h44
  3. utilisation de soundex function
    Par Cyrille1969 dans le forum Cobol
    Réponses: 1
    Dernier message: 09/05/2010, 22h54
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo