我的程序运行速度太慢,以至于在调用 Lucene indexwriter.close 之前,在将 40,000 个文档插入数据库之后,我不得不中途终止它以优化部分代码。然后,对于某些似乎仅限于该特定运行的 40,000 个文档的记录,我找不到任何结果。
这是否意味着我在程序运行期间索引的那些记录丢失了?IndexWriter 必须始终完全关闭以允许将数据写入索引?
提前致谢!
我的程序运行速度太慢,以至于在调用 Lucene indexwriter.close 之前,在将 40,000 个文档插入数据库之后,我不得不中途终止它以优化部分代码。然后,对于某些似乎仅限于该特定运行的 40,000 个文档的记录,我找不到任何结果。
这是否意味着我在程序运行期间索引的那些记录丢失了?IndexWriter 必须始终完全关闭以允许将数据写入索引?
提前致谢!
您需要调用但不关闭commit。addDocument仅分析文档并将数据缓冲到内存中,而 commit 将刷新挂起的更改并执行 fsync。
close调用在内部提交,我认为这就是您认为需要 close 的原因。
但是,请注意不要过于频繁地调用 commit,因为与 addDocument 相比,此操作非常昂贵。