Lucene - 打开一个封闭的IndexWriter

orl*_*oMG 3 java lucene

继承我的问题,我执行add()将文档添加到索引,然后我关闭()它.这很棒!

现在我有一个新的要求,每次我在DB中保存一些东西,我都需要更新我的索引.我无法再创建indexWriter因为它需要超过4分钟所以我只需要更新()或添加()文档到索引.

为了实现它,我没有做index.close(),我在填充索引后正在做index.commit()但是我认为应该关闭然后打开update().

有什么建议吗?谢谢!

dog*_*ane 11

close这是一项代价高昂的操作,commit如果您经常更新,建议使用javadocs .javadocs说close:

将所有更改提交到索引并关闭所有关联文件.请注意,这可能是一项代价高昂的操作,因此,请尝试重新使用单个编写器,而不是关闭并打开一个新编写器.

我相信,之间的区别close,并commitcommit仅仅刷新数据,使其对读者可见,而close过优化指数.这比commit快5倍close.

如果您要连续添加数据,那么最好commit还是最后close完成.