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