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

Requêtes MySQL Discussion :

Recherche de mot et problème de confusion de mot avec LIKE


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut Recherche de mot et problème de confusion de mot avec LIKE
    Bonjour,

    Dans une requête SQL, j'utilise LIKE %mot% pour rechercher dans une phrase un mot, parfois ce mot peu se retrouver au singulier/pluriel ou au féminin/pluriel, etc.

    Tout fonctionne, mais parfois selon la recherche du mot, celui-ci se retrouve dans un autre, ex : ami => famille, etc.

    j'ai lu un bout sur l'utilisation de "_" et effectué quelques tests... les résultats sont faux, il manque un certains nombre d'occurrences qui pourtant étaient bonnes,

    Si vous avez quelques conseils ou un exemple sur ce sujet, merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Si tu utilises la version 5.7 ou plus récente de MySQL, tu peux utiliser l'opérateur REGEXP de préférence à l'opérateur LIKE.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci pour la réponse, en
    localhost => 5.6.12
    + ovh mutualisé
    https://dev.mysql.com/doc/refman/5.6/en/


  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Après vérification, ça fonctionne aussi en 5.6...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci je viens d'essayer également, j'ai du mal à comprendre le principe, par exemple

    ... REGEXP '#lemot#' => retourne 0 résultat alors qu'il devrait les trouver
    ... REGEXP 'lemot' => retourne l'équivalent de LIKE %lemot%


  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    As-tu été lire la documentation de l'opérateur REGEXP ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci pour le lien, j'ai regardé plus autres doc,

    autre exemple

    ... REGEXP '\b(lemot)\b' => retourne 0 résultat alors qu'il devrait les trouver
    ... REGEXP '/\b(lemot)\b/i' => retourne 0 résultat alors qu'il devrait les trouver

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    As-tu essayé avec '.*[[:<:]]lemot[[:>:]].*' ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Désolé pour la réponse tardive, j'étais occupé ailleurs, parfois j'aimerai que les journées soient plus longue pour développer plus ...

    Après plusieurs tests, tout semble parfaitement fonctionner et semble n'y avoir aucune perte d'occurrence avec cette REG, néanmoins j'aurais souhaité que si un mot comporte un pluriel ou féminin/pluriel il puisse l'ajoute dans les occurrences,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '.*[[:<:]]lemot[é|s][[:>:]].*'
    La reg ci-dessus retourne systématiquement le pluriel, comment faire pour qu'il en tienne compte seulement dans l'éventualité d'un pluriel trouvée ?

    Sinon il y a cette solution mais je trouve que ça fait un peu bricolo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '.*[[:<:]]'.$_GET["search"].'|'.$_GET["search"].'s|'.$_GET["search"].'és[[:>:]].*'
    ---------------------

    Solution trouvée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '.*[[:<:]]lemots?[[:>:]].*'


    Encore merci, ça fonctionne bien mieux maintenant.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 571
    Points
    52 571
    Billets dans le blog
    5
    Par défaut
    Et le pluriel de Cheval , Et le féminin de Aviateur ?

    Pour cela il faut une recherche par forme fléchies que MySQL n'offre pas....

    A me lire : https://blog.developpez.com/sqlpro/p...text_search_no
    En particulier le tableau comparatif à la fin...

    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/ * * * * *

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

Discussions similaires

  1. Recherche des mots sans mettre leur accent
    Par walibda dans le forum WebDev
    Réponses: 4
    Dernier message: 08/03/2010, 14h19
  2. recherche de mot avec ou sans accent
    Par ddeee dans le forum ASP
    Réponses: 3
    Dernier message: 02/03/2006, 10h06
  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