Lucene对返回大型结果集的性能影响

时间:2012-02-06 15:16:17

标签: performance solr lucene

有没有人知道让Lucene(或Solr)返回非常长结果集而不仅仅是通常的“前10名”的性能影响。 我们希望从用户搜索中返回所有结果(可以是大约100.000个文档),然后在返回实际结果之前对返回的文档ID进行后处理。

我们当前的索引包含大约1000万到2000万份文档。

2 个答案:

答案 0 :(得分:2)

正如弗拉夫所说,任何形式问题的答案“X会足够快吗?”是:“这取决于。”

我会担心:

  1. 如果这些文档很大,您将丢弃缓存,特别是如果您存储了要检索的字段。
  2. 由于#1,你将拥有大量磁盘IO,这非常慢。
  3. Lucene的表现增长with the number of returned documents。因此,即使忽略像“磁盘比RAM慢”等实际考虑因素,它也会变慢。
  4. 我不知道你在做什么,但有可能用自定义分数算法完成。

    当然,仅仅因为搜索所有文档会比较慢,这并不意味着它太慢而无法使用。一些分面实现基本上可以获得所有匹配的文档,并且这些文档对许多人来说都是充分的。

答案 1 :(得分:2)

我能够在2.5秒内获得100,000行,其中2700万个文档被索引(每个文档有1k字节,大约600B的文本字段)。硬件并不普通,它有128 GB的RAM。 Solr的内存使用情况如下:Res为50GB Virt为106GB。

我开始看到8000万份文档后的性能下降。目前正在研究如何将硬件与问题相匹配。希望对你有帮助。