Solr性能-如何对过滤查询和常规查询进行或运算

时间:2019-06-02 09:55:09

标签: solr

尝试使用Solr 4.7对主查询(q)和过滤查询(fq)进行“或”运算。

索引中有一个高频词

'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放在列表的顶部。

当前无法重新排名。

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

尝试使用QueryParser插件将TermQueryConstantScoreQuery包装。 但它的性能似乎与普通的TermQuery相同。

我正在寻找一种以OR形式运行过滤器查询的方法,这意味着q=field2:value&or_fq=field2:value 或者改为在主查询中创建“非真实得分” TermQuery。 请你帮助我好吗?谢谢。

1 个答案:

答案 0 :(得分:0)

使用*:*作为查询,然后应用您执行的过滤器查询-field1:value OR field2:value作为fq。然后,您可以将bqboostfield2:value一起使用来对在field2中具有匹配项的内容进行评分。