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 :

Rechercher un mot en prenant compte de tous


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Rechercher un mot en prenant compte de tous
    Bonjour,

    Mon problème est de recherche un mot dans une base de données en prenant en compte tous les cas possibles, je m'explique:

    Si j'ai une table qui contient la description des produits, si je recherche le mot "lait" avec like '%lait%', en plus des mots comme "laits" et "lait," qui m'intéresse je retrouve "laiton" qui ne m'intéresse.

    J’utilise VB et ACCESS comme BD.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    A moins d'utiliser des tables dictionnaire qui lient les mots de même racine sémantique entre eux, je ne vois pas...

    Il n'y a pas de magie et l'opérateur LIKE ne peux pas deviner que deux mots qui ont une racine de texte commune ne sont pas sémantiquement voulus comme résultat de recherche.

    Une autre piste est de travailler sur la phonétique des mots bien que je ne pense pas que ça réponde totalement à votre demande : http://sqlpro.developpez.com/cours/soundex/

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par muslem
    Bonjour,

    Mon problème est de recherche un mot dans une base de données en prenant en compte tous les cas possibles, je m'explique:

    Si j'ai une table qui contient la description des produits, si je recherche le mot "lait" avec like '%lait%', en plus des mots comme "laits" et "lait," qui m'intéresse je retrouve "laiton" qui ne m'intéresse.

    J’utilise VB et ACCESS comme BD.

    tout ce que tu peux faire c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ like '%lait%' and champ not like '%ton%'

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ LIKE '%lait^%' OR champ LIKE '%laits^%'
    le caractère ^ représentant un espace.

    "laits" et "lait" seront élus et "laiton" ne le sera pas

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Citation Envoyé par Mercure
    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ LIKE '%lait^%' OR champ LIKE '%laits^%'
    le caractère ^ représentant un espace.

    "laits" et "lait" seront élus et "laiton" ne le sera pas
    J'ai pas compris

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par vmolines
    J'ai pas compris
    C'est pourtant simple ! J'ajoute un espace (un blanc) au bout de la chaîne recherchée. Par exemple, au lieu de "lait" j'écris "lait ", c'est à dire le littéral lait suivi d'un espace, dans le prédicat where de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ LIKE '%lait %' OR champ LIKE '%laits %'
    J'avais mis des ^ dans mon exemple précédent pour représenter les blancs. Je les ai retirés et remplacés par un espace ici.

    Est-ce clair maintenant ?

  7. #7
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Mercure
    C'est pourtant simple ! J'ajoute un espace (un blanc) au bout de la chaîne recherchée. Par exemple, au lieu de "lait" j'écris "lait ", c'est à dire le littéral lait suivi d'un espace, dans le prédicat where de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ LIKE '%lait %' OR champ LIKE '%laits %'
    J'avais mis des ^ dans mon exemple précédent pour représenter les blancs. Je les ai retirés et remplacés par un espace ici.

    Est-ce clair maintenant ?

    et si "lait" est en fin de phrase et suivi d'un point ?

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Dans ce cas, dans votre exemple de requête, il faut concaténer <champ> avec un blanc < > car sinon ça ne reflète pas ce que vous expliquez.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ & ' '  like '%lait %'
    De toute façon ce genre de bidouille ne répond pas de manière efficace et générique au problème soulevé selon moi.

    Comment faites vous pour renvoyer des résultats se rapportant au lait si un utilisateur recherche 'laitage' et 'laitier' alors que vous n'avez prévu que 'lait' et 'laits' dans votre code ?

    C'est impossible à prévoir et deviner si ce n'est en dressant un tableau exhaustif des liens sémantiques entre les mots.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Mathusalem,
    Bien sûr, si" lait" est suivi immédiatement d'un point, la requête n'en tiendra pas compte. Mais il faudrait demander alors à muslem si le cas peut se présenter ?

    vmolines,
    Pourquoi devrais-je concaténer un blanc devant ?
    Si la recherche porte sur "laitage", la requête que je propose ne fonctionnera pas non plus, mais il faudrait savoir si on recherche les lignes qui contiennent "lait" ou laits" ou bien si on recherche les lignes contenant "laitage" ?
    Où est la bidouille ? Je donne une réponse qui peut peut-être satisfaire le demandeur.

  10. #10
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    ben ça marche pas non plus si il ne met que des mots dans les champs, à moins de les faire suivre tous d'un espace inutile

    une solution plus fine serait les expressions régulières, mais je ne sais pas si c'est possible en SQL

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    C'est un problème insoluble à mon sens.

    Voici ce que veut l'auteur :

    Mon problème est de recherche un mot dans une base de données en prenant en compte tous les cas possibles
    Par tous les cas possibles, il entend tous les mots ayant la même racine étymologique qu'un mot donné.

    Vous proposez des solutions pour un exemple donné alors que l'auteur cherche une solution globale. Que ce soit à base de regexp, de like ou de soundex, il est impossible de deviner avec quels mots faire la comparaison. A moins de disposer d'une base de données étymologique exhaustique, il est impossible de faire le rapprochement.

    ps : j'ai parlé de sémantique dans mes posts précédents, il s'agit d'étymologie. Erreur de ma part.

  12. #12
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    tout à fait d'accord avec vmolines.

    de toute façon l'auteur du post nous a abandonné

Discussions similaires

  1. Rechercher un mot dans tous mes documents
    Par rom5656 dans le forum VBA Word
    Réponses: 18
    Dernier message: 02/09/2008, 11h43
  2. [TP]Recherche de mots dans un Doc.
    Par Loceka dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 04/10/2004, 19h04
  3. Recherche des mots contenant ...
    Par Asdorve dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/06/2004, 10h23
  4. Réponses: 10
    Dernier message: 22/05/2004, 13h51
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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