以json格式返回solr响应

时间:2015-02-06 20:40:27

标签: java json solr solrj

我正在尝试以JSON格式返回solr响应。但是我无法获得JSON响应。下面是我的solr配置:'

<queryResponseWriter name="json" default="true" class="org.apache.solr.request.JSONResponseWriter">
    <str name="content-type">application/json</str>
</queryResponseWriter>

以下是我的java代码:

HttpSolrServer server = new HttpSolrServer(serverUrl);
SolrQuery query = new SolrQuery();
query.setQuery(query);
query.set("indent","true");
query.set("wt","json");
QueryResponse response = server.query(query);

System.out.println(response.getResults().get(index));

但输出以下列格式显示。

{numFound=1,start=0,docs=[SolrDocument{_uniqueKey=[“abc@gmail.com”,”abc”], calculation_policy=text_value, username=abc, email=abc@gmail.com, display_order=10, last_login=Mon Jan 26 11:27:35 PST 2015, created=Mon Jan 26 11:27:35 PST 2015}]}

但是在执行以下行之后我得到了JSON响应:

System.out.println(new Gson().toJson(queryResponse.getResults().get(index)));

有人可以告诉我,我错过了哪一步?

3 个答案:

答案 0 :(得分:2)

对于较新版本的Solr(从4.7.0开始),可以直接以json格式返回查询响应。这可以通过NoOpResponseParser完成。

SolrQuery query = new SolrQuery();
QueryRequest req = new QueryRequest(query);

NoOpResponseParser rawJsonResponseParser = new NoOpResponseParser();
rawJsonResponseParser.setWriterType("json");
req.setResponseParser(rawJsonResponseParser);

NamedList<Object> resp = mySolrClient.request(req);
String jsonResponse = (String) resp.get("response");

System.out.println(jsonResponse );

答案 1 :(得分:0)

也许这个链接可能会澄清: quoted format json from Solrj

否则也许你可以通过Http请求实现你所需要的,因为我知道确实有json支持。

答案 2 :(得分:0)

默认情况下,Solrj使用 wt = javabin&amp; version = 2 作为默认提取结果,如http://wiki.apache.org/solr/javabin

中所述

然而,要在json中显示响应,请使用GSON或Jackson(Object Mapper)。