首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在solr中使用重排序查询解析器时,df是必需的参数吗

在solr中使用重排序查询解析器时,df是必需的参数吗
EN

Stack Overflow用户
提问于 2020-05-14 14:08:39
回答 1查看 205关注 0票数 1

我正在使用Re-rank query parser对solr中的文档进行重新排序。

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

代码语言:javascript
复制
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参数,查询就不起作用:

代码语言:javascript
复制
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

抛出错误:

代码语言:javascript
复制
"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之间的关系,以及为什么它会影响重排序的工作方式。

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 22:05:13

了解了这背后的原因以及如何解决这一问题,希望能帮助其他人寻找类似的东西。

当使用reRankQuery时,使用lucene的默认查询解析器,因此它不知道df (即使在这里使用qf参数在这里也不起作用,因为它只被dismax查询解析器理解)。对于没有指定解析器的任何查询,它使用lucene的默认查询解析器。

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

代码语言:javascript
复制
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,以便更好地了解

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61790450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档