我有一个包含大约 500 个文件的文件夹(MY_FILES),每天都有一个新文件到达并放置在那里。每个文件的大小约为 4Mb。
我刚刚开发了一个简单的“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);
}