Bonjour, j'essaie de faire un petit programme multi-plateforme qui indexe les fichiers d'un disque dur et qui ensuite permet de rechercher des fichiers selon divers critères.
Il y a donc 2 phases, l'indexation et la recherche.
Pour la partie indexation je vois 2 approches possibles:
Parcourir récursivement l'ensemble du disque dur et:
1 - Ajouter dans un Btree toute l'information (meta-data) sur les fichiers et stocker le Btree dans un (ou des) fichier(s). Cela implique parcontre de trouver une librairie Java pour les BTree, quelqu'un en connait une ?
2 - Ajouter l'information (meta-data) sur les fichiers dans une base de de donées SQLite et faire les recherches là dessus par la suite.
J'ai regarder un peu du côté de Lucene aussi.
Le logiciel au départ fait donc un indexage complet, mais par la suite il faudrait idéalement procéder par indexage incrémental (mettre a jour dans l'index seulement les changements qu'il y a eu aux fichiers).
Mon problème est comment faire des mises-a-jour incrémentales sur cet index (peu importe l'approche considérée). En effet, comment faire pour savoir quels fichiers ont été renommés/effacés/ajoutés dans le système de fichiers?
Une façon (peut-être un peu brutale) que je vois serait de faire rouler (en limitant le % CPU qu'il peut utiliser) un "crawler" à des périodes X re-scannerait complètement les fichiers du système et compare avec les meta-data dans la base de données et fait les modifications (insert/delete) en conséquence.
Merci pour vos idées.
Partager