我正在使用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之间的关系,以及为什么它将影响重新排名的方式。
[当使用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以更好地理解