0

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

该索引经常更新。

我将 EDisMaxQueryParser 与 filter_query 一起使用。filter_query 只是一个大布尔值或按 id 查询。

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

ids 列表总是不同的而不是连续的。

问题是查询性能不如你想象的那么好。

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

我正在寻找提高此查询性能的方法。

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

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

还有其他选择吗?

4

1 回答 1

0

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

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

细节:

于 2013-06-17T11:40:51.997 回答