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

MS SQL Server Discussion :

Recherche de mot avec match approximatif


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut Recherche de mot avec match approximatif
    Bonjour,

    j'ai developpé un systeme qui recherche dans un champs d'une table tous les mots qui ressemblent plus ou moins ou mot que je rentre pour la recherche. Je m'explique: je rentre le mot 'habitter', la base de donnée ne connait pas ce mot, le systeme que j'ai developper va alors transformer ma chaine de la façon suivant:

    '%h%a%b%i%t%t%e%r%' et lancer une requete de la forme
    where champ.value like '%h%a%b%i%t%t%e%r%'

    derrier je recupere bien entendu pas mal de choses beaucoup trop eloignées de mon mot initial, et pour corriger le tir j'applique un aglo de calcul de distance entre deux strings type SOUNDEX, pour conserver les meilleurs match.

    Ma question est la suivante, existe t'il des fonction natives dans sql server qui feraient ce genre de chose, ou avez vous des propositions a me faire pour rendre ce systeme moins lourd?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    NOn il n'existe pas de fonction natives pour ce faire. VOus pouvez utiliser la différence de levenshtein ou la distance de hamming pour ce faire.

    MAis autant l'algo de Hamming est simple mais trop sélectif autant l'algo de levenshtein est complexe et peu sélectif...

    LIsez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/soundex/#L8

    Je suis aussi auteur d'un algorithme encore différent que j'ai baptisé "inférence directe" et qui est un bon compomis entre ces deux algo.

    Ecrivez moi par mail a mon adresse SQLpro (at) club-internet.fr et je vous enverrais l'article que je compte publier concernant cette méthode.


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Faire un champ de recherche de mot(s) approximatif(s)
    Bonjour,

    J'ai fait un site de vente de chaussures dans lequel je souhaite intégrer un champ de recherche.

    Ce champ de recherche permet au visiteur d'entrer le modèle de chaussures qu'il recherche, afin qu'apparaisse la fiche descriptive du modèle qu'il recherche.

    Mon problème :

    Le but est que le champ de recherche permette de trouver le modèle même si le visiteur se trompe dans l'orthographe du nom du modèle.

    Comment faire pour que la recherche permette de trouver la chaîne de caractères se rapprochant le plus de celle entrée par le visiteur ?

    Cela fait plus d'une semaine que je cherche une réponse, en vain.

    Merci d'avance pour votre réponse

    Cordialement

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Vous devez faire un système d'indexation textuel qui permet la rechercher flou.
    Pour l'indexation textuelle la version 2008 permet de stocker la lémmatisation dans des tables systèmes accessible en lecture.
    Pour la recherches flou, il faut utiliser plusieurs techniques :
    1) l'algorithme du dictionnaire de KNUTH est un excellent point de départ
    2) une fonction de rapprochement de motif comme levenshtein, hamming ou la mienne est assez adéquate : http://sqlpro.developpez.com/cours/s...aisons-motifs/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Recherche de mots avec Windows Seven
    Par bakounine dans le forum Word
    Réponses: 2
    Dernier message: 26/07/2012, 18h35
  2. [MySQL] Recherche avec Match Against
    Par johann51 dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 29/02/2008, 01h01
  3. Vérif de présence d'un mot avec matches()
    Par Cedric507 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/08/2006, 16h31
  4. recherche de mot avec ou sans accent
    Par ddeee dans le forum ASP
    Réponses: 3
    Dernier message: 02/03/2006, 10h06
  5. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41

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