Lucene以及如何衡量索引碎片

时间:2012-08-29 10:29:18

标签: performance lucene

我们正在使用 Lucene 2.9.2 (计划升级到3.x)并且已知的事实是搜索查询会随着时间的推移而变慢。通常我们会执行完整的重新索引。我已经阅读了问题https://stackoverflow.com/a/668453/356815及其答案并立即回答:我们不使用optimize(),因为在运行时不再接受性能。

碎片吗

我想知道以下内容:衡量现有索引的碎片的最佳做法是什么? Luke可以帮助我吗?

听到您对此分析主题的看法会非常有趣。

关于我们的指数的更多信息:

  • 我们索引了400'000个文件
  • 我们大量使用每个文档的属性
  • 对于每个请求,我们都会创建一个新的搜索器对象(因为我们希望更改立即显示在搜索结果中)
  • 查询效果介于30毫秒(重复相同搜索)和10秒(复杂)
  • 之间
  • 索引包含44个文件(15个.del文件,24个cfs文件),大小为1GB

1 个答案:

答案 0 :(得分:3)

较旧版本的Lucene没有有效处理大量细分。这就是为什么有些人建议优化(将所有段合并在一起)以提高搜索性能。

最近版本的Lucene不太适用。事实上,优化已被重命名为声音不那么神奇(你现在需要调用forceMerge(1))并且总是合并段甚至被认为是有害的(看看Lucene开发人员Simon Willnauer的这个nice article)。

  

对于每个请求,我们都会创建一个新的搜索器对象

打开读者非常昂贵。您应该使用SearcherManager,这将有助于您在必要时重新打开(增量打开)索引。