Bonjour, après avoir reconsidéré les besoins et les fonctions nécessaires à l'indexation et la recherche d'éléments, nous avons pensé utiliser Lucene pour l'implantation de la base de donnée. Les données ont été décomposées en trois groupes : * les meta-données de chaque élément, permettant de l'identifier, de connaître son type, son parent en version, etc * le contenu indexé, provenant d'une librairie, de résultat, etc. C'est sur ce contenu que la recherche full text sera faite * les données à proprement parler, qui sont stockées sur le système de fichier. On conserve dans ces fichiers les meta données, afin de permettre la reconstruction d'une base à partir d'un dossier. Lucene fonctionne par document indexé. Chaque document a des champs, associant à un libellé une valeur. Cette valeur peut être indexée et/ou stockée. Un document peut avoir plusieurs champs avec le même nom. Nous stockons ainsi les meta données dans des champs prédéfinis, et le contenu à indexer dans un champ non stocké. Une fois les documents indexés, la recherche peut se faire sur des champs de meta donnée afin de récuperer un élément en particulier, ou sur le champ indexé. Cette dernière recherche permet des requêtes textuelles complexes, en autorisant les jokers, les opérateurs booléens, etc. Afin de valider ce choix, nous avons procédé à différents tests, notamment de montée en charge. Ainsi, un test a créé une base de 25 000 documents, contenant chacun entre 10 000 et 30 000 mots d'un dictionnaire de 150 000 mots (entre 2 et 7 lettres). Soit au total environ 11Gb de données indexées. L'index en lui même pèse 3Gb, le contenu n'étant pas stocké. L'ajout atomique de document et la recherche ne pose pas de problème de performance, Lucene étant suffisamment mature et la transformation entre un document et des méta données simple. La principale difficulté se trouvent dans la gestion des fichiers d'index. Une fois que ceux ci sont ouvert en lecture, Lucene conserve un index correspondant au lecteur au moment de son ouverture, tout en laissant la possibilité de continuer l'indexation. Afin de conserver la cohérence entre ce qui est lu et ce qui est écrit, le lecteur est invalidé lors de l'écriture de données. Lors de la première lecture après une écriture, une ouverture d'un nouvel index est réalisé, et est pratiquement immédiat. Les recherches full texte sur deux caractères (type eu*) sont assez rapides (150 à 200ms), le plus long étant la récupération des document depuis l'index, en récupérant tous ses champs associés (3ms par document). Un avantage majeur de Lucene est aussi son aspect portable, il peut être exécuter sur le poste client ou sur le serveur sans problème. L'implantation du moteur Lucene se base sur l'interface Database ci jointe. Ainsi, si vous n'y voyez pas d'objection, Lucene sera utilisé pour stocker les meta données. Cordialement, Gabriel -------------- section suivante -------------- Une pièce jointe non texte a été nettoyée... Nom: fr_cemagref_simexplorer_is_storage_database_classes.png Type: image/png Taille: 4887 octets Desc: non disponible Url: https://lists.labs.libre-entreprise.org/mailman/private/simexplorer-si-devel...