IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Conseils - Indexation et recherche de fichiers en Java


Sujet :

Java

  1. #1
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut Conseils - Indexation et recherche de fichiers en Java
    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.

  2. #2
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Lucene est je pense un bon choix open-source pour l'indexation.

    Soit tu as l'option d'un crawler, soit tu déclenches les modifications d'indexation lors des actions sur tes fichiers.

  3. #3
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Bonjour, merci pour la réponse.

    Ce qui m'intriguie c'est comment réaliser la détection des changements systèmes qui ont été fait aux fichiers pendant que mon programme roule (ou ne roule pas). ?

  4. #4
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Citation Envoyé par vdumont Voir le message
    Bonjour, merci pour la réponse.

    Ce qui m'intriguie c'est comment réaliser la détection des changements systèmes qui ont été fait aux fichiers pendant que mon programme roule (ou ne roule pas). ?
    demande à google comment ils font...

    Une petite recherche s'impose effectivement, j'imagine que les approches sont nombreuses, par exemple tu pourrais avoir une application en tâche de fond qui scanne les nouveaux fichiers d'un répertoire, dont la date est > à une précédente que tu aurais enregistrée, et tu indexes ou réindexes...

    C'est juste une idée comme ça, je pense que tu trouveras une réponse précise en cherchant.

    Bon courage

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2011
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Oui c'est vraiment très gênant, j'ai rencontré le même souci. De plus, il y a un autre problème, c'est que Lucene ne permet d'indexer que 31 fichiers!!!!
    As tu trouvé une solution pour ce problème ?

    Bonne chance pour nous les deux concernant ce souci

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Si je ne dis pas de bêtise, il me semble que Java 7 a une nouvelle bibliothèque (nio avec WatchService ?) qui permet la détection des modifications de fichiers.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Si je ne dis pas de bêtise, il me semble que Java 7 a une nouvelle bibliothèque (nio avec WatchService ?) qui permet la détection des modifications de fichiers.
    Oui, c'est ça http://java.sun.com/developer/techni.../javase/nio/#6

Discussions similaires

  1. Moteur de recherche indexant les contenus de fichiers (pdf, odt, docx, etc)
    Par ALIM-Issy dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 29/03/2015, 18h48
  2. Réponses: 10
    Dernier message: 07/07/2011, 13h19
  3. Recherche d'un module Java : Upload de fichiers
    Par pekka77 dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 19/12/2008, 19h22
  4. Réponses: 16
    Dernier message: 26/06/2007, 17h25
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo