我正在使用Re-rank query parser对solr中的文档进行重新排序。
当在lucene查询中传入df参数时,我能够获得重新排序的查询的结果
http://ip:port/solr/core/select?qt=dismax&q=mobile&rq={!rerank%20reRankQuery=$rqq%20reRankDocs=1000%20reRankWeight=3}&rqq=(red)&fl=display_query&df=query如果我们不传递df参数,查询就不起作用:
http://ip:port/solr/core/select?qt=dismax&q=mobile&rq={!rerank%20reRankQuery=$rqq%20reRankDocs=1000%20reRankWeight=3}&rqq=(red)&fl=display_query&df=query抛出错误:
"error": {
"metadata": [
"error-class",
"org.apache.solr.common.SolrException",
"root-error-class",
"org.apache.solr.search.SyntaxError"
],
"msg": "org.apache.solr.search.SyntaxError: Neither qf nor df are present.",
"code": 400
}不能弄清楚rq(重排序查询)和df之间的关系,以及为什么它会影响重排序的工作方式。
发布于 2020-05-14 22:05:13
了解了这背后的原因以及如何解决这一问题,希望能帮助其他人寻找类似的东西。
当使用reRankQuery时,使用lucene的默认查询解析器,因此它不知道df (即使在这里使用qf参数在这里也不起作用,因为它只被dismax查询解析器理解)。对于没有指定解析器的任何查询,它使用lucene的默认查询解析器。
要强制reRank使用dismax解析查询,语法可以是
http://ip:port/solr/core/select?qt=dismax&q=mobile&rq={!rerank%20reRankQuery=$rqq%20reRankDocs=1000%20reRankWeight=3}&rqq={!dismax}(red)&fl=display_query&df=query一定要检查code,以便更好地了解
https://stackoverflow.com/questions/61790450
复制相似问题