Lucene搜索太久了

时间:2010-06-03 20:26:27

标签: performance search lucene lucene.net

我;在(当前)70Gig索引上使用Lucene.net(2.9.2.2)..我可以做一个相当复杂的搜索并在1~2秒内获取所有文档ID ..但要实际加载所有命中(我的测试查询中大约70万)需要5分钟以上。

我们没有将lucene用于UI,这是我们拥有数亿个预缓存数据元素的流程之间的数据存储区,而我正在处理的部分是从每个找到的文档中导出一些特定字段。 (因为这是进程之间的导出,因此不会进行分页)。

我的问题是在搜索结果中获取所有文档的最佳方法是什么?目前我正在使用一个自定义收集器,它使用文档(使用MapFieldSelector)作为其收集。我也尝试在收集器完成后迭代列表...但这更糟糕。

我对这些想法持开放态度: - )。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要搜索哪些字段?您需要存储哪些字段? Lucene.net可能不是存储和检索实际文档文本的最有效方法。 您的方案建议不存储任何内容,索引所需的字段并返回文档ID列表。文档本身可以存储在辅助数据库中。

答案 1 :(得分:0)

嗯,鉴于当你的“获取”代码移到收集器之外时你发现了问题,听起来你的问题与I / O有关。

考虑到索引的大小,我几乎不敢问这个,但你试过了吗?

  • 优化索引
  • 解压缩硬盘

如果是,那么检索费率文件会有明显影响吗?顺便说一下,如果我的摇晃数学是正确的,我会得到2333项/秒的回复......

此外,对于您正在检索的字段子集,是否有任何适合压缩的字段?或者您已经尝试过压缩?

作为一个相关的问题,您的索引中有70,000个项目代表什么样的比例?了解I / O吞吐量会很有趣。您可以计算机器/硬盘驱动器组合的最大理论数据速率,看看您是否已经接近极限。