我正在尝试使用以下查询调试我遇到的问题:
q=(Cartridge)&fq={!tag=Deals_EN_ss}Deals_EN_ss:"Clearance%20Items"%20OR%20{!tag=Deals_EN_ss}Deals_EN_ss:"On%20Promotion"&defType=edismax&facet=true&facet.field={!ex=Deals_EN_ss}Deals_EN_ss&facet.field={!key=Brand_EN_ss}Brand_EN_ss&facet.field={!key=Rating_EN_ss}Rating_EN_ss&facet.field={!key=CA_Default_Price_EN_p}CA_Default_Price_EN_p
在这里,我尝试执行多选择构面查询,过滤Deals_EN_ss构面。当我对我的SOLR服务器运行此查询时。我得到以下回复:
<response>
<lst name="responseHeader">
<int name="status">400</int>
<int name="QTime">3</int>
<lst name="params">
<str name="facet">true</str>
<str name="q">(Cartridge)</str>
<arr name="facet.field">
<str>{!ex=Deals_EN_ss}Deals_EN_ss</str>
<str>{!key=Brand_EN_ss}Brand_EN_ss</str>
<str>{!key=Rating_EN_ss}Rating_EN_ss</str>
<str>{!key=CA_Default_Price_EN_p}CA_Default_Price_EN_p</str>
</arr>
<str name="wt">xml</str>
<arr name="fq">
<str>
{!tag=Deals_EN_ss}Deals_EN_ss:"Clearance Items" OR {!tag=Deals_EN_ss}Deals_EN_ss:"On Promotion"
</str>
</arr>
<str name="defType">edismax</str>
</lst>
</lst>
<lst name="error">
<str name="msg">
org.apache.solr.search.SyntaxError: Cannot parse 'Deals_EN_ss:"On': Lexical error at line 1, column 16. Encountered: <EOF> after : "\"On"
</str>
<int name="code">400</int>
</lst>
</response>
我不确定我在这里缺少什么。任何人都可以帮我看一下查询语法吗?
答案 0 :(得分:0)
标记和排除被指定为本地参数{!...}
,它只能在每个参数的开头出现一次。
见https://wiki.apache.org/solr/LocalParams
您的第一个fq
参数包含第二个非法本地参数。
尝试删除{!tag=Deals_EN_ss}
的第二次出现。
您的查询应如下所示:
q=(Cartridge)&fq={!tag=Deals_EN_ss}Deals_EN_ss:"Clearance%20Items"%20OR%20Deals_EN_ss:"On%20Promotion"&defType=edismax&facet=true&facet.field={!ex=Deals_EN_ss}Deals_EN_ss&facet.field={!key=Brand_EN_ss}Brand_EN_ss&facet.field={!key=Rating_EN_ss}Rating_EN_ss&facet.field={!key=CA_Default_Price_EN_p}CA_Default_Price_EN_p