【问题标题】:Lucene IndexWriter.Close() vs indexWriter.Commit()Lucene IndexWriter.Close() 与 indexWriter.Commit()
【发布时间】:2016-02-21 08:08:18
【问题描述】:

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

注意:我要做索引的数据很大,所以我不能关闭IndexWriter运行时。

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

【问题讨论】:

  • 我的回答对你有用吗?您需要更多信息吗?
  • 非常感谢。您的信息足够了。
  • 我很高兴听到这个消息。你熟悉接受答案吗?还是我的回答中缺少某些内容导致您不接受?

标签: indexing full-text-search lucene.net indexwriter bigdata


【解决方案1】:

Commit() 提交待处理的、缓冲的索引更改(然后可以使用 IndexReader() 找到)。然后可以继续使用 IndexWriter 进行更多更改。 Close() 也执行 Commit(),但另外关闭 IndexWriter。请注意,IndexWriter 实现了 IDisposable(),我建议使用它。

在您的第一条注释中,如果您的意思是要索引很多文档,那很好。您可以对许多文档使用相同的 IndexWriter 而无需关闭它。只需在同一 IndexWriter using() 语句中循环遍历您想要索引的许多文档。

关于您的第二个注释,您必须在 IndexReader() 看到您的 IndexWriter() 更改之前执行 commit()(或 close())。您始终可以使用 IndexReader() 进行搜索,但它只会看到自上次 IndexWriter.Commit() 以来的索引。

对于这些重要的细节,我推荐 Lucene In Action。这对我帮助很大。

【讨论】:

  • +1 推荐书“Lucene in Action”。我发现它对理解 Lucene.net 非常有帮助。
猜你喜欢
  • 2011-01-01
  • 1970-01-01
  • 2013-08-24
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
相关资源
最近更新 更多