我有一个启用了分面的edismax查询。我没有指定默认字段(既不在select子句中也不在solrconfig.xml中),因为我只想搜索'qf'参数中指定的字段。 (我的印象是,如果我执行指定默认字段,那么该字段也会被考虑在内。)
以下是查询:
/select?q=david&defType=edismax&qf=firstname^1+lastname^10&facet=true&facet.field=organization
到目前为止,一切都按预期工作:我得到了一些结果,并且还有一些来自分面搜索的结果,例如
当我现在点击其中一个组织时,我想只搜索属于该组织的文档集,因此使用过滤器查询。但是,当我添加这样的'filterQuery'(fq)时,Solr抱怨
查询中未指定字段名称,并且未通过“df”指定默认值 PARAM。
这是否意味着我做必须添加某种“全能”默认字段?但这似乎不符合逻辑,因为所有搜索字段都已在'qf'中指定?
这是我的疑问:
/select?q=david&defType=edismax&qf=firstname^1+lastname^10&fq=organization:UZ+Leuven
以下是查询的输出:
{
responseHeader: {
status: 400,
QTime: 1,
params: {
q: "david",
qf: "firstname^1 lastname^10",
wt: "json",
fq: "organization:UZ Leuven",
defType: "edismax"
}
},
error: {
msg: "no field name specified in query and no default specified via 'df' param",
code: 400
}
}
答案 0 :(得分:1)
您可能想要organization:"UZ Leuven"
,因为它抱怨Leuven
缺少字段名称。 fq
参数的标准查询语法是lucene语法。
如果您想对fq
参数使用edismax / dismax查询语法,则必须通过LocalParams告诉Solr to use the edismax parser:
fq={!type=edismax qf=$fqqf}organization:UZ Leuven&fqqf=field1 field2 field3
或可能
fq={!type=edismax qf='field1 field2 field3'}organization:UZ Leuven