Solr加速大型或布尔过滤器

时间:2013-06-14 20:44:40

标签: performance solr filter lucene

我目前正在使用solr 4.2.1,索引中包含大约10万个文档。

索引经常更新。

我正在使用EDisMaxQueryParser和filter_query。 filter_query只是id的一个大布尔或查询。

fq = id:(1 2 3 4 ... 50950)

ids列表总是不同的而不是顺序的。

问题是查询性能不太好,你可以想象。

在某些特定情况下,我可以根据不同的字段进行过滤,但有时候(比如所有查询的30-40%),我仍然会使用这个大型ID过滤器。

我正在寻找提高查询效果的方法。

似乎不能在那里应用solr join。

另一种选择是以某种方式用子集覆盖整个间隔并切换到范围过滤器查询。但我不能说这是一个简单的解决方案,也可能不是最佳解决方案。

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

这是已知问题 - 我遇到了“安全过滤器列表”的问题。 所以你应该做什么:

  1. 编写自己的自定义QParserPlugin + QParser并使用Lucene的FieldCacheTermsFilter
  2. 禁用此过滤器的缓存
  3. 如果您有不同的过滤器,请将其用作PostFilter。
  4. 详细说明: