在solr中使用Re-rank查询解析器时df是强制性参数

问题描述 投票:1回答:1

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

solr lucene
1个回答
1
投票
了解其背后的原因以及如何解决此问题,希望能帮助其他人寻找类似的东西。

[当使用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以更好地理解
© www.soinside.com 2019 - 2024. All rights reserved.