solr – {!boost …}乘数与dismax查询解析器

如何在dismax查询解析器中使用q = {!boost …}乘数?

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

?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的剩余部分.如何在dismax中使用{!boost …}?

注意:我正在运行Solr 4.10.4.

最佳答案 根据
Solr Relevancy FAQ § How can I boost the score of newer documents,

To boost another query parser such as a dismax query, the value of the boost query is a full sub-query and hence can use the {!queryParser} syntax. Alternately, the defType param can be used in the boost local params to set the default type to dismax. The other dismax parameters may be set as top level parameters.

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

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

要么:

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