Solr 性能 - 如何使用常规查询对过滤查询进行 OR

Solr Performance - how to OR a filter query with a regular query

尝试使用 Solr 4.7 对主查询 (q) 和筛选查询 (fq) 进行 OR。

我们在索引中有一个高频词

'field1:value' - 5 million documents
'field2:value' - 500 documents which should be ranked higher

搜索时
q=field1:value OR field2:value

查询时间很长(超过2秒)

搜索时

q=*:*fq=field1:value OR field2:value

查询 运行 相当快,但我无法获得列表顶部的 field2:value

目前 post 无法重新排名。

我了解过滤器查询 (fq) 的速度是不涉及评分。 (这不是一个频繁的查询,不需要缓存)。

尝试在 QueryParser 插件中用 ConstantScoreQuery 包装 TermQuery。 但它的性能似乎与普通的 TermQuery.

一样

我正在寻找的是一种将 运行 过滤器查询作为 OR 的方法,这意味着 q=field2:value&or_fq=field2:value 或者在主查询中创建一个 'real-non-scoring' TermQuery。 请你帮助我好吗?谢谢。

使用 *:* 作为查询,然后应用您所做的过滤查询 - field1:value OR field2:value as fq。然后,您可以使用 bqboostfield2:value 对那些在 field2.

中有命中的人进行评分