lucene: cómo realizar una indexación incremental y evitar 'borrar y rehacer'

Tengo una carpeta (MY_FILES) que tiene alrededor de 500 archivos y cada día llega un nuevo archivo y se coloca allí. El tamaño de cada archivo es de alrededor de 4Mb.

Acabo de desarrollar un simple 'void main' para probar si puedo buscar un comodín específico en esos archivos. Funciona bien

El problema es que estoy eliminando la vieja indexed_folder y reindexar de nuevo. Esto lleva mucho tiempo y obviamente es ineficiente. Lo que estoy buscando es una 'indexación incremental'. Es decir, si el índice ya existe, simplemente agregue los nuevos archivos al índice.

Me preguntaba si Lucene tiene algún tipo de mecanismo para verificar si el "documento" estaba indexado antes de intentar indexarlo. Algo como el escritor.

¡Gracias!

Mi código se ve así:

       // build the writer
       IndexWriter writer;
       IndexWriterConfig indexWriter = new IndexWriterConfig(Version.LUCENE_36, analyzer);
       writer = new IndexWriter(fsDir, indexWriter);
       writer.deleteAll();  //must - otherwise it will return duplicated result 
       //build the docs and add to writer
       File dir = new File(MY_FILES);
       File[] files = dir.listFiles();
       int counter = 0;
       for (File file : files) 
       { 
           String path = file.getCanonicalPath();
           FileReader reader = new FileReader(file);
           Document doc = new Document();  
           doc.add(new Field("filename", file.getName(), Field.Store.YES, Field.Index.ANALYZED));
           doc.add(new Field("path", path, Field.Store.YES, Field.Index.ANALYZED));
           doc.add(new Field("content", reader));  

           writer.addDocument(doc);
           System.out.println("indexing "+file.getName()+" "+ ++counter+"/"+files.length);
       }

Respuestas a la pregunta(2)

Su respuesta a la pregunta