在solr中使用重新排序查询解析器时,df是一个强制参数吗

在solr中使用重新排序查询解析器时,df是一个强制参数吗,solr,lucene,Solr,Lucene,我正在使用从solr重新排列文档 当在lucene查询中传入df param时,我能够获得重新排序查询的结果 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 param,则查询不

我正在使用从solr重新排列文档

当在lucene查询中传入df param时,我能够获得重新排序查询的结果

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 param,则查询不起作用:

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参数也不起作用,因为只有Demax查询解析器才能理解它)。对于未指定解析器的任何查询,它使用lucene的默认查询解析器

要强制reRank使用Demax解析查询,语法可以是

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

检查一下以更好地理解

我对重读不是很熟悉,但是重播仍然需要考虑一个字段,不是吗?如果没有设置,它将无法正确确定要搜索的字段。此外,该错误是否仅在存在重新排序查询时发生,或者默认搜索字段是否完全丢失?例如,对于dismax查询本身?