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 :

Quelle stratégie adopter pour ma recherche ?


Sujet :

Requêtes MySQL

  1. #1
    Invité
    Invité(e)
    Par défaut Quelle stratégie adopter pour ma recherche ?
    Bonjour à tous,

    Je viens quémender votre expérience pour un petit problème de 'structuring' dirons nous... En fait, je dispose de X éléments insérés dans une base de données,lesquels sont décrits par les champs suivants:

    • filename
    • command
    • pkg
    • desc
    • mode


    Le filename représente bien entendu le nom du fichier image associé à l'élément, la command représente la commande à executer pour insérer l'élément, pkg le package à utiliser, et bla et bla.

    Problème: desc.

    desc est en fait la description de l'élément, c'est un champ de type texte, en voilà un par exemple: ,motclé1,motclé2,motclé3,motclé4,

    avec cette stratégie de recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM Symbole WHERE descr LIKE  ('%,$motC,%') ORDER BY cmd"
    J'ai mis des virgules, car l'utilisateur tapant la lettre a se retrouverait avec tous les éléments contenant a dans leur description, soit quasiment tous, alors que j'aimerai qu'il ne tombe que sur un élément qui correspond (de près ou de loin) à la lettre A (le symbole A,alpha,angstroem,... en LaTeX, car oui, mon site est un site de recherche de symbole LaTeX par mot clé, pratique quand on connait pas les symboles...).


    Donc en gros, j'aimerai créer une recherche moins précise quelle celle là (car là, si on a pas le bon mot clé, on trouve pas), mais plus précise que ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM Symbole WHERE descr LIKE  ('%$motC%') ORDER BY cmd"
    Car là....


    Ce projet est à moyenne voire grosse envergure, c'est du total Open-Source, et d'ailleurs si des gens veulent m'aider, c'est avec plaisir. Je ne poste pas le lien, car pub interdite, héhé

    Je vous souhaite une excellente journée

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je pense que tu devrais pouvoir trouver ton bonheur avec REGEXP
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre réponse. J'ai cependant 2 petites interrogations... Premièrement, à quel niveau de performance se situe la fonction REGXP ? Je veux dire, cela n'est-il pas un peu "lourdingue" pour faire des recherches ? Deuxièmement, j'aurai aimé savoir quel type de motif je pouvais appliquer, parce que ma question porte également là dessus, comment effectueriez-vous une recherche sur une liste de mot séparés par des virgules, sachant que certains symboles sont cararectérisés par des mots clés d'une seule lettre (la lettre alpha par exemple a la description suivante: ,a,alpha,greek,grec,alphabet,alph,letter,lettre,)... En somme, je n'ai pas envie que l'utilisateur ait à taper le mot clé EXACT pour tomber sur le symbole, mais pas non plus que lorsqu'il tape a, il doive scroller tout... Ou alors peut-être un tri par pertinence ? :-/


    Dernière question, qui n'a rien à voir, je vois partout qu'on préconise les full-text search, je me suis renseigné mais cela ne semble pas s'appliquer à mon cas, si ?


    Merci beaucoup.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si ce n'est pas trop tard, tu pourrais aussi revoir ton modèle de données et faisant une table des mots-clés et une table associative entre les symboles et les mots-clés.

    MCD :
    Symbole -0,n----Correspondre----0,n- Mot_cle

    Tables :
    Symbole (s_id, s_symbole, s_cpommande, s_pkg...)
    Mot_Cle (mc_id, mc_mot)
    Correspondance (c_id_mot_cle, c_id_symbole)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par n3rdz0rz Voir le message
    Dernière question, qui n'a rien à voir, je vois partout qu'on préconise les full-text search, je me suis renseigné mais cela ne semble pas s'appliquer à mon cas, si ?
    Si tu remplaces ton séparateur virgule par un séparateur espace, il me semble que la recherche full-text serait assez adaptée... elle te permettrait de faire des recherches soit sur une série de mots, soit sur le début d'un (ou plusieurs) mots :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- recherche sur des mots exacts, avec tri par pertinence
    WHERE MATCH (descr) AGAINST ('alpha alfa grec')
     
    -- recherche sur des mots tronqués, avec tri par nb de mots trouvés
    WHERE MATCH (descr) AGAINST ('al* gre*' IN BOOLEAN MODE) 
    ORDER BY MATCH (descr) AGAINST ('al* gre*' IN BOOLEAN MODE)
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/04/2015, 09h15
  2. Réponses: 4
    Dernier message: 12/02/2013, 09h53
  3. [MCD] Quelle structure adopter pour ma base ?
    Par scheme dans le forum Schéma
    Réponses: 3
    Dernier message: 28/03/2011, 16h25
  4. Quelle librairie adopter pour faire un jeu par navigateur ?
    Par Meardon dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 22/10/2008, 17h39
  5. [MySQL] Base de données : stratégie à adopter pour un moteur de recherche
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 04/06/2007, 11h35

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