继承我的问题,我执行add()将文档添加到索引,然后关闭()它。这很棒!
现在我有了新的要求,每次我在DB中保存一些内容时,我都需要更新我的索引。我无法再次创建indexWriter,因为它需要超过4分钟,所以我只需要更新()或添加()文档到索引。
为了实现它,我没有做index.close(),我在填充索引后正在做index.commit()但是我认为应该关闭然后打开update()。
有什么建议吗?谢谢!
答案 0 :(得分:11)
close
是一项代价高昂的操作,javadocs建议您在频繁更新时使用commit
。 javadocs声明close
:
将所有更改提交到索引和 关闭所有相关文件。注意 这可能是一项代价高昂的操作,因此, 尝试重新使用单个编写器 关闭并开设一个新的。
我认为close
和commit
之间的区别在于commit
只刷新数据以使其对读者可见,而close
也会优化索引。这使得commit
约为5 times faster而不是close
。
如果您要连续添加数据,最好是commit
,最后是close
,等等。