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。那么它应该可以正常工作。
我正在尝试 运行 在我的测试开始时进行 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。那么它应该可以正常工作。