我正在使用python(Django)以json格式(JSON request API)向SOLR(9.0.0)发送请求来检索数据。当使用faceting时,我遇到了一个问题,可能是由于请求的json格式。有人能帮忙吗?
我的目标是从一个core的字段“sentence”中搜索任意两个小写字母的单词(使用regex [a-z]{2}
)。
此查询可从SOLR admin(URL已解码)正确运行,并提供所需的结果:http://localhost:8983/solr/lexdb_genl93/select?facet.field=sentence&facet.matches=[a-z]{2}&facet.query=sentence:/[a-z]{2}/&facet=true&indent=true&q.op=OR&q=*:*&rows=0&start=0
我的请求json,返回400(JSON请求中未知的顶级键:分面字段):
{
"query":"*:*",
"limit":0,
"facet":"true",
"facet.field":"sentence",
"facet.matches":"[a-z]{2}",
"facet.query":"sentence:/[a-z]{2}/"
}
Python代码:
import requests
prerule= '[a-z]{2}'
solr_query= {"query": "*:*", 'limit':0, "facet": "true", "facet.field": "sentence", "facet.matches": prerule, "facet.query": "sentence:/"+prerule+"/"}
solr_headers = {'Content-type': 'application/json'}
resp = requests.post(lexsettings.solr_url+'/query', data=json.dumps(solr_query), headers=solr_headers, auth=(lexsettings.solr_user, lexsettings.solr_pass))
jresp= json.loads(resp.content)
print('solrlist: '+str(jresp))
(print
语句的)输出的错误部分:
"error":{
"metadata":[
"error-class",
"org.apache.solr.common.SolrException",
"root-error-class",
"org.apache.solr.common.SolrException"
],
"msg":"Unknown top-level key in JSON request : facet.field",
"code":400
}
谢谢你阅读到这里。如果你需要任何进一步的信息,请让我知道。
1条答案
按热度按时间whlutmcx1#
这是因为有效的查询和你要处理的请求完全不一样,你需要查询参数来完成大部分的工作,所以你的请求应该是:
如果你真的需要把它作为json发送,那么使用
json
kwarg而不是data
: