【问题标题】:{!boost ...} multiplier with dismax query parser{!boost ...} 乘数与 dismax 查询解析器
【发布时间】:2015-06-30 22:19:44
【问题描述】:

如何将 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。

【问题讨论】:

  • 你不能使用bf parameter
  • @alexf 我想要{!boost ...} 提供的乘法提升,而不是bfbqprovide 提供的加法提升。

标签: solr dismax


【解决方案1】:

根据Solr Relevancy FAQ § How can I boost the score of newer documents

要提升另一个查询解析器,例如 dismax 查询,提升查询的值是一个完整的子查询,因此可以使用 {!queryParser} 语法。或者,可以在 boost 本地参数中使用 defType 参数将默认类型设置为 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=...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多