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 Oracle Discussion :

algorithme de recherche


Sujet :

SQL Oracle

  1. #1
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut algorithme de recherche
    Salut tous le monde,
    J’ais une base de données qui contiens les nom des clients d’un entreprise,
    Dans cette entreprise ils on oublie d’ajoute la contrant unique pour les clients
    Pour cella en trouve des clients duplique (par exemple : jaque, jak , jack)
    Y a-t-il des algorithme pour chercher ces nom duplique.

    Merci d’avance

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est pas très clair..
    Tu veux regrouper des clients ayant des noms qui phonétiquement sont proches ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    La fonction SOUNDEX peut être utilisée pour faire des comparisons phonétiques en SQL.

  4. #4
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut Mecri
    Citation Envoyé par pifor
    La fonction SOUNDEX peut être utilisée pour faire des comparisons phonétiques en SQL.

    C’est une très très bonne solution
    Merci cher ami.

    Mais dans le cas par exemp ( jaque brel, brel jack)

    y-t-ile une solution

  5. #5
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Tu n'as rien en natif de mieux que le SOUNDEX, on a fait des choses chez nous sur un sujet comparable, cela a pris des semaines de développement.

    En gros le soucis est de trouver des critères suffisamment large pour regrouper des noms différents mais aussi d'autres critères (par exemple la date de naissance) pour ne pas faire de faux rapprochement .

    Tu peux très bien avoir deux Jacques Brel (avec exactement la meme orthographe) dans ta base qui soient deux clients différents.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    j'ai plutôt entendu dire que SOUNDEX était surtout pour comparer en anglais... et pas très doué non plus!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    SQL> select soundex('jacques'),soundex('jacque') from dual;
     
    SOUN SOUN
    ---- ----
    J220 J200
     
    SQL> 
    SQL> select soundex('enoughsssssssssssssssss'),soundex('enaghhhhhhhhhhhhhhhhhhhhhgrrrrrrr') from dua
     
    SOUN SOUN
    ---- ----
    E522 E522
     
    SQL> select soundex('coucou'),soundex('caca') from dual;
     
    SOUN SOUN
    ---- ----
    C200 C200

  7. #7
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Oui, c'est aussi la conclusion à laquelle sont arrivé nos équipes de dev.

    Ils ont développé d'autre Algorithme plus efficace (Jaro Wrinkler il me semble, ils avaient trouvé pas mal d'article de recherche sur le sujet) pour la comparaison de nom. Mais comme, je le disais comparer les noms même avec le meilleur algo du monde est très insuffisant.

  8. #8
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut Merci a tous
    Oui vraiment j’ai utilisé SOUNDEX et il ma donnée des meilleurs résultats
    Mais j’ai trouve une difficulté de cherche des nom composée comme (‘mouamed ali abdellah’, ‘ali mouhamed abdellah’ ‘abdellah ali mouhamed’)

    Merci cher mais

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    év. un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select
      n, 
      ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+')))+
      nvl(ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+',1,2))),0)+
      nvl(ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+',1,3))),0) hash
    from t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    N                           HASH
    --------------------- ----------
    mouamed ali abdellah  7342301036
    ali mouhamed abdellah 7342301036
    Jo Cocker             3891533565

  10. #10
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par laurentschneider
    év. un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select
      n, 
      ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+')))+
      nvl(ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+',1,2))),0)+
      nvl(ora_hash(soundex(regexp_substr(n,'[[:alpha:]]+',1,3))),0) hash
    from t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    N                           HASH
    --------------------- ----------
    mouamed ali abdellah  7342301036
    ali mouhamed abdellah 7342301036
    Jo Cocker             3891533565
    Merci mon ami
    Tu px m’explique se que tu viens de dire
    J’ai pas bien compris les codes

  11. #11
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu as plusieurs chaines, notées [[:alpha:]]+, pour chaque chaine tu évalues le SOUNDEX, ensuite tu sommes les hash afin de trouver les enregistrements identiques.

    Selon les règles du forums que tu ferais bien de relire, il faut toujours spécifier ta version, sinon pas de réponse

  12. #12
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par laurentschneider
    tu as plusieurs chaines, notées [[:alpha:]]+, pour chaque chaine tu évalues le SOUNDEX, ensuite tu sommes les hash afin de trouver les enregistrements identiques.

    Selon les règles du forums que tu ferais bien de relire, il faut toujours spécifier ta version, sinon pas de réponse

    Merci mon ami

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme de recherche
    Par toddy_101 dans le forum Langage
    Réponses: 13
    Dernier message: 23/01/2007, 12h06
  2. Algorithme de Recherche
    Par i.pollux dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 19/10/2006, 09h48
  3. Meilleur algorithme de recherche de chaine?
    Par ryosnake dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 20/09/2006, 20h34
  4. Algorithme de recherche
    Par pekka77 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 08/03/2006, 13h01
  5. Algorithme de recherche de chemin
    Par amelie gaya dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/06/2002, 15h29

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