使用solrj以json格式检索SolrDocument

时间:2012-10-22 12:38:51

标签: java solr solrj

如何指定SolrQuery以json格式返回数据? 下面是我用来查询数据的代码:一旦我得到SolrDocument,我怎样才能将它转换为json对象/字符串?

 SolrQuery sQuery = new SolrQuery();
 sQuery.setQuery("name:test");
 QueryResponse resp = server.query(sQuery);
 SolrDocumentList docs = resp.getResults();

3 个答案:

答案 0 :(得分:16)

从solrj导入JSONUtil类,它有用于solr文档的json转换器,或者如果你看到该类的代码,你可以轻松编写一个:

import org.apache.noggit.JSONUtil;

SolrQuery sQuery = new SolrQuery();
sQuery.setQuery("name:test");
QueryResponse resp = server.query(sQuery);
SolrDocumentList docs = resp.getResults();
String returnValue = JSONUtil.toJSON(docs); //this has the json documents

答案 1 :(得分:3)

SolrJ旨在检索/转换文档作为您定义的POJO。如果要将文档转换为JSON,则需要使用Jackson之类的库来执行从SolrDocument到JSON的转换。

不确定这是否适合您,但想提一下,您可能会考虑将Solr的响应格式化为JSON。有关详细信息,请参阅SolJSON。在这种情况下,您不需要使用SolrJ。最简单的方法是使用直接的http调用(通过java http客户端库)并使用SolJSON技术从Solr获取JSON响应。

答案 2 :(得分:0)

您也可以使用 GSON 来完成此操作。

SolrDocumentList SolrResponse = searchWithSolr();
Gson gson = new Gson();
if (SolrResponse.size()!=0) {
  System.out.println(gson.toJson(SolrResponse));
  interpolMap.put("interpol", gson.toJson(InterpolSolrResponse));
}