|
| filtrage avancé sur requête ou table |
| Iniciado por GB, 24,may. 2020 20:07 - 7 respuestas |
| |
| | | |
|
| |
Miembro registrado 371 mensajes |
|
| Publicado el 24,mayo 2020 - 20:07 |
Bonsoir a tous,
Je souhaite dans mon appli affecter des mots clés à des documents. Ces mots clés sont stockés dans une rubrique texte et séparés par un RC. (dans la rubrique on a donc motclé1 RC motclé2 RC ....)
Dans une fenêtre je souhaite pouvoir cocher les mots clés qui correspondent aux documents que je recherche et afficher les résultats.
Exemple :
Je veux voir les documents contenant le motclé1 ou/et le motclé2.
Je ne vois pas comment procéder...
J'ai regardé du coté des requêtes filtrées sur une liste de valeur mais le problème c'est qu'il faut que le champ contienne exactement cette liste, hors vous l'avez compris, je veux un filtre contient.
Faut il envisager des parcours de requête et des ajouts si inexistant dans une table mémoire ? Faut il passer par une rubrique différente (d'un champ texte avec des valeurs) ?
J espère être suffisamment clair pour que vous puissiez m'éclairer
bonne soirée |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 16 mensajes |
|
| Publicado el 24,mayo 2020 - 21:46 |
Bonsoir,
je ne sais pas quel système de SGBD tu utilises... Je ne connais que mySQL, et voilà comment je procède:
concernant ton architecture, ça pourrait fonctionner tel quel, mais l'index ne doit pas être très performant. je comprend que tu as une seule table 'documents' qui contient une rubrique 'mots_clés'
il faudrait quelque chose qui ressemble (en mySQL) à ça:
SELECT * FROM documents WHERE documents.mots_clés LIKE (%<un mot clé>%)
... mais une requête par mot clé, c'est un peu lourd et peu élégant... il faudrait regarder du coté de REGEXP (à vérifier...) pour tout faire en une seule requête peut-être...
De mon coté, je privilégie en général: - 1 table 'documents' pour les documents - 1 table 'mots' pour les mots clés - 1 table 'liaison' (avec id_document et id_mot_cle en colonne, avec pour unicité un index id_document +id_mot_cle: une ligne = une association id document + id mot clé (unique)
et une requête du style:
SELECT * FROM documents, liaison WHERE documents.id_document = liaison.id_document AND liaison.id_mot_cle IN( <liste des mots clé sélectionnés>)
pour ton architecture, c'est un peu différent, il faut utiliser la fonction LIKE
Bon dev'
Grégoire |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 24,mayo 2020 - 22:08 |
Bonsoir
Merci de ta reponse. Je suis en hfsql. J ai bien un fichier mot mot-clé dans lequel je stock les mots clés. Je n avais pas pensé a lier le tout. Ca pourrait fonctionner mais j ai peur que ce soit lourd a gérer (modification, suppression de mots-clés). |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 25,mayo 2020 - 13:13 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 25,mayo 2020 - 13:55 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 170 mensajes |
|
| Publicado el 25,mayo 2020 - 14:14 |
GB a écrit :
Bonsoir a tous,
... Ces mots clés sont stockés dans une rubrique texte et séparés par un RC. (dans la rubrique on a donc motclé1 RC motclé2 RC ....)...
Pourquoi avoir procédé de la sorte ?
Une table de liaison ne serait-elle pas plus judicieuse ?
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 170 mensajes |
|
| Publicado el 25,mayo 2020 - 14:30 |
[Edit]
En stockant bien sur les mots clef dans une autre table puisqu'il semblerait qu'un mot clef puisse être affecté à plusieurs documents !
Table document(PK_id, libelle, ...) Table mot_clef(PK_id, libelle) Table mot_clef_affecte(FK_id_mot_clef, FK_id_document)
Du coup, la gestion des mots clef est simplifiée puisqu'il suffit d'ajouter ou de supprimer une liaison dans cette dernière table.
... Je veux voir les documents contenant le motclé1 ou/et le motclé2 ...
Et ceci est un OU, tu ne peux pas avoir les deux
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 25,mayo 2020 - 22:15 |
Voroltinquo a écrit :
Réglé en 5 minutes ....
J'ai mis en place le full-text. A savoir que pour ignorer le paramètre full texte dans une requete, il suffit de ne pas afficher le champs pertinence fulltext.
Merci beaucoup |
| |
| |
| | | |
|
| | | | |
| | |
|