{!boost..}带dismax查询解析器的乘法器



如何将q={!boost ...}乘法器与dismax查询解析器一起使用?

使用标准查询,您可以执行以下操作:

?q={!boost b=$multiplier}text:foo
&multiplier=...

然而,当我尝试为dismax做等效的事情时:

?defType=dismax
&q={!boost b=$multiplier}foo
&qf=text
&multiplier=...

我得到以下错误:

{
  "error": {
    "msg": "no field name specified in query and no default specified via 'df' param",
    "code": 400
  }
}

我猜测在q中指定{!boost ...}会覆盖defType=dismax,并导致使用标准查询解析器解析q的其余部分。如何将{!boost ...}与dismax一起使用?

注意:我正在运行Solr 4.10.4。

根据Solr Relevancy常见问题解答§如何提高新文档的分数,

要提升另一个查询解析器,如dismax查询,提升查询的值是一个完整的子查询,因此可以使用{!queryParser}语法。或者,defType参数可以在boost本地参数中使用,以将默认类型设置为dismax。其他dismax参数可以被设置为顶级参数。

这意味着,为了将dismax(或任何其他查询解析器(与boost查询解析器一起使用,您需要将参数构造为:

?q={!boost b=$multiplier v=$qq}
&qq={!dismax}foo
&qf=text
&multiplier=...

或者:

?q={!boost b=$multiplier defType=dismax}foo
&qf=text
&multiplier=...

相关内容

  • 没有找到相关文章