solrj QueryResponse转换为json

时间:2013-02-09 00:03:38

标签: json solrj

我使用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”}}

2 个答案:

答案 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);