2016-02-21 34 views
0

IndexWriter.Close()IndexWriter.Commit()当我只有单个实例indexWriter时有什么不同?Lucene IndexWriter.Close()vs indexWriter.Commit()

注意:我要制作索引的数据非常大,我无法关闭IndexWriter运行时。

注意:我想在数据在同一时间索引的文档中搜索。

+0

我的答案是否适合你?你需要额外的信息吗? –

+0

非常感谢。你的信息就够了。 – amir

+0

我很高兴听到这个消息。你熟悉接受答案吗?或者我的答案中有些东西缺失,导致您不接受它? –

回答

1

Commit()提交挂起的,缓存的索引变化(然后可以通过IndexReader()找到)。 IndexWriter然后可以继续用于更多的更改。 Close()也执行Commit(),但是另外关闭了IndexWriter。请注意,IndexWriter实现了IDisposable(),我推荐使用它。

通过你的第一个注意,如果你的意思是有很多文件要索引,那很好。您可以使用相同的IndexWriter来处理多个文档而不关闭它。只需循环使用()语句即可在同一个IndexWriter中索引多个文档。

关于你的第二个音符,你必须在你的IndexWriter()变化被IndexReader()看到之前执行一个commit()(或close())。您始终可以使用IndexReader()进行搜索,但它只能看到自上次IndexWriter.Commit()以来的索引。

我推荐Lucene在这些重要的细节行动。它帮助了我很多。