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

Langage SQL Discussion :

Recherche approchante dans base de données (ou ailleurs)


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Recherche approchante dans base de données (ou ailleurs)
    Bonjour à tous,

    Dans une table, on enregistre un grand nombre de substances dangereuses ou produits chimique (pas mal de colonnes pour permettre de bien les définir).

    Le but de notre recherche est que pour une chaine de recherche "metil" l'item nommé "Triméthyl-butane" soit renvoyé (et d'autres bien sur).
    Actuellement, nous effectuons la recherche en fonction d'option (accent, casse) directement dans le code métier (en C#). On récupère tous les items de la base et on effectue la comparaison en C#. La recherche approchante n'est pas encore gérée.

    Suite à un grand ajout d'items dans notre base et par soucis de performance, nous aimerions améliorer notre select pour faire le tri grâce au moteur SQL.

    Personnellement, plutot que faire un tri net et précis, je serais plus pour faire un tri primaire en SQL, qui limiterait le nombre d'items à traiter niveau métier. Mais je ne sais pas si c'est réalisable et surtout ça ne résoud pas le soucis principal de la recherche approchante.
    J'avais étudié le Soundex (merci à l'auteur ) il y a peu de temps. C'est un bon algorithme, sauf que dans mon cas le fait qu'il garde la première lettre d'un mot pour sa valeur résultat, entraine qu'on ne verra pas "metil" dans "triméthyl", alors qu'il me renvoie bien le même résultat pour "metil" et "méthyl".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select soundex('methyl'), soundex('metil'), soundex('triméthyl') from dual;
     
    Résultat :
    M340      M340    T653
    Est ce que faire les tests au niveau SQL ne fait pas perdre trop de temps ? (j'ai testé aussi de ramener les options accent et casse dans le moteur SQL, mais remplacer les accents dans toutes les chaines semble faire perdre pas mal de temps).
    Est ce qu'un autre algorithme de phonétique pourrait m'aider sans plomber les performances ?
    Voyez vous d'autres solutions à mes problèmes ?

    Je vous remercie par avance.

  2. #2
    Rédacteur en Chef
    Avatar de Marc Lussac
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mars 2002
    Messages
    28 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2002
    Messages : 28 664
    Points : 62 034
    Points
    62 034
    Par défaut
    Quelle base de données ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    C'est une application 3 tiers qui doit pouvoir tourner aussi bien sur une base Oracle 9i que sur une base SQLServer (2000 ou 2005).
    A partir du métier, on attaque la base avec des procédures stockées.


    PS : Merci pour le déplacement, j'avais longtemps hésité pour finalement le mettre au mauvais endroit

Discussions similaires

  1. recherche dans base de donnée mysql
    Par alex01pernot dans le forum Bases de données
    Réponses: 13
    Dernier message: 03/05/2020, 15h50
  2. Rechercher mot dans base de données
    Par Arsene12 dans le forum VBA Word
    Réponses: 2
    Dernier message: 28/09/2013, 00h48
  3. Recherche id dans base de données
    Par darklulu dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2012, 21h58
  4. probleme recherche dans base de donnée
    Par 0kiss0 dans le forum ASP
    Réponses: 3
    Dernier message: 16/04/2007, 18h50
  5. Recherche dans base de données et casse
    Par laurentdusseau dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/10/2006, 10h05

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