我使用solrj向solr提交查询,该查询以json格式返回结果。
SolrQuery query = new SolrQuery();
SolrQuery query = new SolrQuery();
query.setParam("kw", keyword);
query.setParam("lc", location);
query.setParam("wt", "json");
query.setParam(CommonParams.QT, "/lds");
QueryResponse qResponse = solrServer.query(query);
searchResultStr = qResponse.toString();
但是searchResultStr没有JSON格式的字符串。相反,它有这样的东西:
{responseHeader = {状态= 0,QTIME = 21},位置= {has_zipcode =真,location_param = 94085}}
但如果我直接点击浏览器中的solr url,我会得到正确的JSBON格式:
{“responseHeader”:{“status”:0,“QTime”:15},“location”:{“has_zipcode”:true,“location_param”:“94085”}}
答案 0 :(得分:0)
对于JSON
输出,您必须使用HTTPSolrServer
查询curl
,如答案here中所述。使用EmbeddedSolrServer
无效,solrj
。
当您使用solrj
进行查询时,您必须从SolrDocumentList
对象获取QueryResponse
并通过迭代每个JSON
将其转换为SolrDocument
格式并按照您想要的方式将数据输入JSON
。
答案 1 :(得分:0)
Solr QueryResponse返回一个hashmap,所以使用任何hashmap到json转换器来获取它的json。在这里,我使用Gson()进行转换。
QueryResponse response = solr.query(query);
Gson gson = new Gson();
String json = gson.toJson(response.getResults());
System.out.println(json);