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

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

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

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

Мне было интересно, есть ли у Lucene какой-то механизм, чтобы проверить,документ» был проиндексирован, прежде чем пытаться проиндексировать его. Что-то вроде 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)

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