我们正在使用Lucene 2.9.2(计划升级到3. x),搜索查询会随着时间的推移而变慢,这是一个已知的事实。通常我们会执行完整的重新索引。我已经阅读了问题https://stackoverflow.com/a/668453/356815及其答案,现在就回答:我们不使用优化(),因为运行它时性能不再可以接受。
破碎?
我想知道以下几点:衡量现有索引碎片化的最佳做法是什么?卢克能帮我吗?
听听大家对这个分析题目的想法会很有意思。
关于我们指数的更多信息:
旧版本的Lucene不能有效地处理大量段。这就是为什么有些人建议优化(将所有段合并在一起)以提高搜索性能的原因。
最近版本的Lucene就不那么真实了。事实上,优化已经被重命名为听起来不那么神奇了(你现在需要调用forceMerge(1)),总是合并段甚至被认为是有害的(看看Lucene开发人员Simon Willnauer的这篇漂亮文章)。
对于每个请求,我们创建一个新的搜索器对象
打开阅读器是非常昂贵的。您应该使用SearcherManager,它将帮助您仅在必要时重新打开(增量打开)索引。