Lucene: как выполнить пошаговую индексацию и избежать «удаления и повторения»

У меня есть папка (MY_FILES), которая содержит около 500 файлов, и каждый день приходит новый файл, и он помещается туда. Размер каждого файла составляет около 4 МБ.

Я только что разработал простую 'void main' ' чтобы проверить, могу ли я найти определенный подстановочный знак в этих файлах. Работает просто отлично.

Проблема в том, что я удаляю старую indexed_folder и снова переиндексирую. Это занимает много времени и, очевидно, неэффективно. То, что я ищу, - это «инкрементная индексация». То есть, если индекс уже существует - просто добавьте новые файлы в индекс.

Мне было интересно, есть ли в Lucene какой-то механизм, чтобы проверить, является ли 'doc' был проиндексирован, прежде чем пытаться проиндексировать его. Что-то вроде writer.isDocExists?

Спасибо!

Мой код выглядит так:

       // 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);
       }

Ответы на вопрос(2)

Ваш ответ на вопрос