org.apache.solr.search.SyntaxError: on SOLR Multi-select Facet Query
org.apache.solr.search.SyntaxError: on SOLR Multi-select Facet Query
我正在尝试调试我遇到的以下查询问题:
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
在这里,我尝试执行多select 方面查询,在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>
我不确定我在这里遗漏了什么。谁能帮我看看查询语法?
标记和排除被指定为局部参数{!...}
,它只能在每个参数的开头出现一次。
参见 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
我正在尝试调试我遇到的以下查询问题:
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
在这里,我尝试执行多select 方面查询,在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>
我不确定我在这里遗漏了什么。谁能帮我看看查询语法?
标记和排除被指定为局部参数{!...}
,它只能在每个参数的开头出现一次。
参见 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