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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 28
    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 Expert

    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
    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 émérite 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
    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 Expert

    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
    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 Expert

    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
    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 Expert

    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
    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 émérite 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
    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 Expert

    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
    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.

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