首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在查询文档子集时提高Solr性能

在查询文档子集时提高Solr性能
EN

Stack Overflow用户
提问于 2015-06-24 13:08:36
回答 1查看 1.3K关注 0票数 0

我有一个可能有数百万份文件的索引。我想对这些文件的一部分(大约25,000份文件)进行大约20'0000次搜索。这25,000个文档可以占用存储在Solr中的大约100 MB (由存储和索引文本字段组成)。

问题

随着索引文档数量的增加,查询的性能会下降很多。例如,在100,000个文档索引上运行20,000次搜索,达到25,000个文档,大约需要4分钟。在200000文档索引上运行相同的搜索大约需要20分钟。

那么,在搜索之前,有没有办法将这25,000个文档缓存在RAM中呢?

更新

一些真正有用的东西:

  • 减少返回的行数(几乎在所有情况下,我都必须迭代返回的结果,而且在几乎所有的情况下,匹配结果都不超过100个,但我将行设置为一个非常大的值。减少行数提高了大约2倍的性能。这似乎违反了直觉。如果只有79次匹配,并且我将返回的行计数设置为100,则它的性能要好于79次匹配的情况,并将行数设置为1000。在第一种情况下,Solr已经返回已找到的项计数并快速执行。为什么要有性能差异?)
  • 减少了多线程(我增加了用于查询的多线程,因为在开发框中有更多可用资源。在资源有限的生产箱上,它正在放慢速度。仅使用一两个线程就能使我的速度提高约2倍。)

一些没有真正帮助的事情:

  • 将字段查询拆分为(我已经在所有可能的地方使用字段查询,但我将它们组合在一个fq中,用于每个查询fq=name:a AND type:b )。使用fq=name:a&fq=type:b将它们分开缓存(参见Apache文档),可以提高性能。但在这件事上并没有太大的不同。
  • 更改缓存设置--在本例中是-- filterCache似乎最具潜力。然而,增加它或改变它的设置并没有产生很大的影响。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 15:32:26

为性能推荐的几点事情:

  • 在机箱上有足够的空闲RAM,这样索引文件就可以在OS缓存中
  • 尝试在SolrConfig中使用solr缓存设置
  • 在提交后玩自动武器
  • 尝试开发您的查询以限制结果集。较大的结果集,特别是如果使用分组和faceting会降低性能。现在,200,000个文档索引非常小,所以您应该没有任何问题,但是我想我应该在缩放时提到这一点。
代码语言:javascript
代码运行次数:0
运行
复制
- Try to use Filter query (FQ) whenever possible. They are much faster than doing field:val in q, plus they are cached. 

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31027493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档