我有一个大索引(大约100 GB),我想经常更新索引中的文档。我对两种方法有疑问:
1)更新文件
2)删除文档并添加更新版本
哪一个会更快?还有其他优点和缺点!?
答案 0 :(得分:2)
关于Lucene API文档,更新文档或删除旧文档和添加新文档之间应该没有区别。内部更新会导致删除和添加操作:
在任何一种情况下,都会使用addDocument添加文档,并使用deleteDocuments(Term)或deleteDocuments(Query)删除文档。可以使用updateDocument更新文档(只删除然后添加整个文档)。完成添加,删除和更新文档后,应调用close。 (http://lucene.apache.org/core/4_6_0/core/org/apache/lucene/index/IndexWriter.html)
答案 1 :(得分:1)
如果您可以批量删除和添加,最佳做法是首先进行所有删除,然后进行所有添加。我对大型指数的测试证明了这一点。