|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() David GUEZ Inscription : octobre 2009 Messages : 14 ![]() |
Bonjour,
je suis actuellement en train de coder un logiciel de GED (Gestion Electronique de Documents) Le logiciel gère une liste de documents (avec le nom de fichier, sa date de création, etc...), une liste de tags et une liste de correspondance entre les tags et les documents: exemple: Code :
Je voudrais à présent faire une requête qui me liste les fichiers contenant justement facture ET internet, et là je sèche. Donc 1. soit il y a une erreur de conception dans mes tables SQL, ce qui est très envisageable (c'est la première fois que j'utilise un SGBD) 2 soit il y a un moyen quelconque et là ce serait super... en encore plus si vous pouvez m'indiquer le moyen de parvenir à mes fins. Note : le SGBD en question, c'est sqlite3, si la précision est utile... Merci à ceux qui prendront le temps de lire ma question! A bienôt NB: A ce propos, un peu de pub, le programme est déjà utilisable, s'appelle MALODOS et se trouve ici : http://code.google.com/p/malodos/downloads/list Mais je ferais une vrai annonce quand j'aurais réglé (ou éludé) le problème de requete en question ici... |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Rassurez vous, il n'y a pas d'erreur de conception pour cette partie du modèle en tout cas. poru ce qui est de la requete, comme je suppose que voudrez par la suite éventuellement rechercher plus de deux tags, je pense que le mieux est de faire une jointure, de grouper, et de verifier le nombre d'occurences. Cela pourra par la suite aussi vous permettre de classer les documents par ordre de correspondances trouvées : Code SQL :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() David GUEZ Inscription : octobre 2009 Messages : 14 ![]() |
Merci pour cette réponse rapide!
A vrai dire, dans le logiciel, je voudrais pouvoir autoriser des requetes du type TITLE:facture OR TITLE:bidule AND DESCRIPTION:un_truc ... et j'espérais en fait pouvoir parser ceci en remplaçant simplement chaque couple FIELD:VALEUR par une expression SQL équivalente, en conservant les AND/OR/NOT et parenthèses éventuelles (c'est ce que je fais pour l'instant). Je suppose que mon parser devra alors être un peu plus costaud que ça en fait. En tout cas je retiens la solution des inner join, ça me donnera au moins la direction où aller! Encore merci beaucoup... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Je ne sais pas d'ou sortent vos colonnes title et description, mais le nom de cette dernière laisse penser que ce sera une saisie libre (et non plus une liste de tags prédéfinis)
La recherche full text pourrait aussi être une solution...(elle pourra notamment permettre de faire le rapprochement entre facture et factures par exemple...) |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() David GUEZ Inscription : octobre 2009 Messages : 14 ![]() |
oui, effectivement, pour simplifier la description de mon problème, je n'avais évoqué que le champs 'tags'. En fait, chaque document possède un nom de fichier, un titre, un description (ou commentaire) et une liste de tags.
il y a une table keyword qui est remplie automatiquement par exemple, si j'ajoute un document fichier1.pdf avec comme titre 'facture electricite juillet 2008' et description = 'paye le 20/05/06' et enfin comme tags 'facture,maison' alors le logiciel découpe automatiquement chacun de ces champs pour éventuellement ajouter les mots electricite,facture,maison,paye,juillet dans la table des index. Par ailleurs, il met a jours une table de correspondances avec comme champ ID_DOC ID_KEYWORD ID_FIELD - d'ailleurs, pour être précis, la table tags contient également une version transformée avec un algo de phonex pour une recherche soundlike - pour l'instant une requête comme est transformée en Code :
SELECT docID,sum(count) FROM fullDoc WHERE OR ( soundex_word='toto') OR ( documentDate > '25/05/75') GROUP BY docID Code :
Mais là je rentre vraiment dans les détails, je ne sais pas si ça apporte beaucoup d'information pertinente. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com