2013-01-10 61 views
1

我的程序运行速度太慢,以至于在将40,000个文档插入数据库之后,我不得不中止它的一半以优化代码的一部分,但是在调用Lucene indexwriter.close之前。然后,我无法找到某些记录的结果,这些记录似乎仅限于该特定运行的40,000个文档。Lucene indexwriter.close()是必须的吗?

这是否意味着,那些我曾在程序运行期间索引记录丢失? IndexWriter必须始终完全关闭以允许将数据写入索引?

在此先感谢!

回答

1

它不是关闭,你需要调用但commitaddDocument仅分析文档并将数据缓存到内存中,而提交将刷新挂起的更改并执行fsync。

close内部调用承诺,我想这就是为什么你承担接近是必需的。

然而,谨防不调用commit往往比addDocument这个操作是非常昂贵的。

+0

我明白了,谢谢你的提示! :) – na9090

+0

你能将答案标记为已接受吗? – jpountz