Solr query works in browser but not using RestTemplate org.apache.solr.search.SyntaxError: Cannot parse

Solr query works in browser but not using RestTemplate org.apache.solr.search.SyntaxError: Cannot parse

我正在尝试 运行 在我的测试开始时进行 solr 查询以获取一堆列表,然后我将在测试中使用这些列表 运行。

如果我在 Chrome 中提出此请求,我会收到 json 响应:

MYAPIDOMAIN/solr/listings/select?q=category:commercial+AND+property_type:office&fl=listing_id,listing_status&group=true&group.main=true&group.field=listing_status&group.limit=1&rows=100&wt=json&indent=on

在测试中,我使用 Spring RestTemplate 进行调用,然后我解析 JSON 响应,它适用于我的一些查询,但对于这个查询,我只是返回一个错误:

 "responseHeader":{
    "status":400,
    "QTime":7,
    "params":{
      "q":"category:commercial%2BAND%2Bproperty_type:office",
      "group.main":"true",
      "indent":"on",
      "fl":"listing_id,listing_status",
      "group.limit":"1",
      "rows":"100",
      "wt":"json",
      "group.field":"listing_status",
      "group":"true"}},
  "error":{
    "msg":"org.apache.solr.search.SyntaxError: Cannot parse 'category:commercial%2BAND%2Bproperty_type:office': Encountered \" \":\" \": \"\" at line 1, column 41.\nWas expecting one of:\n    <EOF> \n    <AND> ...\n    <OR> ...\n    <NOT> ...\n    \"+\" ...\n    \"-\" ...\n    <BAREOPER> ...\n    \"(\" ...\n    \"*\" ...\n    \"^\" ...\n    <QUOTED> ...\n    <TERM> ...\n    <FUZZY_SLOP> ...\n    <PREFIXTERM> ...\n    <WILDTERM> ...\n    <REGEXPTERM> ...\n    \"[\" ...\n    \"{\" ...\n    <LPARAMS> ...\n    <NUMBER> ...\n    ",
    "code":400}}

我对刚刚在测试中使用的 solr 查询一无所知,显然这是一个编码问题,但我不知道在哪里。我试过使用 URLEncoder,我发现了一些在线 url 编码器,但似乎没有任何效果。

谁能告诉我这有什么问题吗?我还有 5 个问题需要查询,所以我真的需要修复。

谢谢

我在我的本地尝试了同样的方法并发现了同样的错误,这是由于您的语法中的编码值 %2B -> +。它正在破坏解析器。

因此您可以使用 space 而不是 +,后者将更改为 %20。那么它应该可以正常工作。