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 :

Requete de recherche "au moins un mots" moteur de recherche


Sujet :

Langage SQL

  1. #1
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut Requete de recherche "au moins un mots" moteur de recherche
    Bonjour,

    dans le cadre d'un projet sur la gestion de documents, je dois réaliser un requête qui me semble Très compliquée.

    Je travaille sous mysql.

    J'ai cette structure de table :
    DOCUMENT(document_id, document_nom)
    MOT_CLEF(mot_clef_id, mot_clef_nom)
    DOCUMENT_MOT_CLEF(document_id, mot_clef_id)

    Autrement dit en bon français : un document a un ou plusieurs mots clefs qui lui sont attribué.

    J'ai commencé par réfléchir à ma première requête (plus facile) : la personne recherche un document qui possède tous les mots clefs (X mots clefs) donc avec mon langage d'application (php) je peux créer une requête dynamique en fonction du nombre de mots clefs.

    La deuxième me semble plus compliquée : la personne recherche un document qui possède au moins un mots clef.
    Ce que je voudrais sur cette requête c'est pouvoir mettre une pondération de correspondance de mots clefs aux documents (ça ne doit pas être très claire).
    Un petit exemple :
    la personne cherche : "conception etude travail"
    j'ai deux documents : - doc 1 avec mots clefs "conception mot2 mot3"
    - doc 2 avec mots clefs "conception etude mot3"
    - doc 3 avec mots clefs "mot1 étude travail"

    J'aimerais donc grâce à ma recherche pouvoir mettre une sorte de pondération pour avoir les documents les plus pertinents en haut (avec le plus de mots clefs correspondants) et les moins pertinents en bas (1 seul mot clef)

    Comment faire ? Cela semble récursif car il peut y avoir X mots clefs demandés par l'utilisateur.

    Est ce possible de le faire en SQL ? En dynamisant la requête avec le langage PHP ? Avez vous des indices à me donner ?
    (ai je été assez clair ?)

    Merci par avance.
    Cordialement,
    Tid.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Regarde du côté de MATCH

  3. #3
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Bonjour,

    match me servira pour de la recherche plein texte titre du document, auteur... (ce sera mon deuxième choix de recherche)
    Ici ce n'est pas possible car le nombre de mots clefs est dynamique.

    @+,
    Tid.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 215
    Points : 558
    Points
    558
    Par défaut
    Une méthode qui ne me satisfait pas complètement serait de faire une requête sql pour chaque mot clé recherché, de fusionner (union) les résultats, puis avec group by et count de voir combien de fois un même document figure dans les résultats.

  5. #5
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Solution intéressante bien que la requête puisse devenir assez lourde (avec imaginons 10 mots clefs mais c'est tout à fait jouable avec PHP derrière).

    Je laisse le post en suspens pour l'instant pour voir si quelqu'un a une autre idée


    Merci michel.bosseaux

    @+,
    Tid.

  6. #6
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Apriori, pas d'autres propositions.
    Je passe le thread en résolu.

    @+,
    Tid.

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

Discussions similaires

  1. [RegEx] Moteur de recherche, accents et groupes de mots
    Par petite fée dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2014, 11h05
  2. [MySQL] Requête sur plusieurs mots pour moteur de recherche
    Par fey dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 22/09/2008, 09h46
  3. Moteur de recherche en cliquant sur un mot
    Par nightgringo dans le forum Langage
    Réponses: 1
    Dernier message: 03/06/2007, 14h53
  4. Requete avec que le debut d'un mot
    Par Karibou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2005, 15h42

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