尝试使用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
插件将TermQuery
用ConstantScoreQuery
包装。
但它的性能似乎与普通的TermQuery
相同。
我正在寻找一种以OR形式运行过滤器查询的方法,这意味着q=field2:value&or_fq=field2:value
或者改为在主查询中创建“非真实得分” TermQuery
。
请你帮助我好吗?谢谢。
答案 0 :(得分:0)
使用*:*
作为查询,然后应用您执行的过滤器查询-field1:value OR field2:value
作为fq
。然后,您可以将bq
或boost
与field2:value
一起使用来对在field2
中具有匹配项的内容进行评分。