如何将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
}
}
我猜测在{!boost ...}
中指定q
会覆盖defType=dismax
并导致使用标准查询解析器解析q
的剩余部分。如何将{!boost ...}
与dismax一起使用?
注意:我正在运行Solr 4.10.4。
答案 0 :(得分:2)
根据Solr Relevancy FAQ § How can I boost the score of newer documents,
为了增强另一个查询解析器,例如dismax查询,boost查询的值是一个完整的子查询,因此可以使用{!queryParser}语法。或者,可以在boost local params中使用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=...