以下solr请求工作正常:
&json.facet={domains:{type:terms,field:domains,domain:{excludeTags:DOMAIN}},specialties:{type:terms,field:specialties,domain:{excludeTags:SPECIALTY}}}
&fq={!tag=SPECIALTY}specialties:(1043 1023) AND {!tag=DOMAIN}domains:100
如果我只是更改fq参数中的顺序,则使用400 Bad Request解决solr响应。
&json.facet={domains:{type:terms,field:domains,domain:{excludeTags:DOMAIN}},specialties:{type:terms,field:specialties,domain:{excludeTags:SPECIALTY}}}
&fq={!tag=DOMAIN}domains:100 AND {!tag=SPECIALTY}specialties:(1043 1023)
我想知道我做错了什么,或者如果在solr中可能是个问题。
我使用solr 7.2.1,并且按照Yonik的教程进行操作:
http://yonik.com/multi-select-faceting/
答案 0 :(得分:2)
一个localparam(即{}
)之间的东西是参数中的第一个东西。您在过滤器查询中间添加的第二个本地参数不会按预期使用,但是当您将其移到前面时,它会突然被解析。
您应该将这两部分拆分为单独的fq
:
&fq={!tag=DOMAIN}domains:100
&fq={!tag=SPECIALTY}specialties:(1043 1023)
如果您仍然收到错误请求400 - 请检查您的Solr实例中的实际服务器日志 - 它会向您显示它所处理的部分(拼写错误等)。
答案 1 :(得分:1)
这很奇怪。一位同事发现,通过在标记和字段之间添加空格,查询按任何顺序按预期工作。此外,添加加号力以匹配所有条件。这是工作查询,只需在fq参数中添加空格和加号:
&json.facet={domains:{type:terms,field:domains,domain:{excludeTags:DOMAIN}},specialties:{type:terms,field:specialties,domain:{excludeTags:SPECIALTY}}}
&fq={!tag=DOMAIN} +domains:100 AND {!tag=SPECIALTY} +specialties:(1043 1023)
请谨慎使用。这可能是一个黑客。文档不清楚这一点。