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
TITRE=toto AND date>20/05/75
est transformée en
SELECT docID,sum(count) FROM fullDoc WHERE or ( soundex_word='toto') or ( documentDate > '25/05/75') GROUP BY docID
où fullDoc est une vue cree comme ca
1 2 3 4 5 6 7 8 9 10
|
create view if not exists fullDoc
as
select D.title, D.description, D.filename, D.documentDate,
D.tags, D.RowID docID,K.keyword,
K.soundex_word,DW.field,DW.count
FROM keywords K,documents D,docWords DW
WHERE DW.keyID = K.rowID AND DW.docID = D.RowID |
Si je fais un mélange entre un champ texte et un champ date comme dans l'exemple ci dessus, ça marche très bien. Mais je voudrais également faire plusieurs conditions sur différents champs de texte, d'où mon problème.
Mais là je rentre vraiment dans les détails, je ne sais pas si ça apporte beaucoup d'information pertinente.
Partager