Java 使用solrj检索json格式的SolrDocument

Java 使用solrj检索json格式的SolrDocument,java,solr,solrj,Java,Solr,Solrj,如何指定SolrQuery以json格式返回数据? 下面是我用来查询数据的代码:一旦我得到SolrDocument,我如何将其转换为json对象/字符串 SolrQuery sQuery = new SolrQuery(); sQuery.setQuery("name:test"); QueryResponse resp = server.query(sQuery); SolrDocumentList docs = resp.getResults(); SolrJ旨在将文档检索/转换为

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

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

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


不确定这是否是你的选择,但要提到的是,你可以考虑从已经被格式化为JSON的SOR中得到响应。有关更多详细信息,请参阅。在这种情况下,您不需要使用SolrJ。最简单的方法是使用直接的http调用(通过java http客户端库),并使用SolJSON技术从Solr获取JSON响应。

从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

您也可以使用GSON

SolrDocumentList SolrResponse=searchWithSolr();
Gson Gson=新的Gson();
if(SolrResponse.size()!=0){
System.out.println(gson.toJson(SolrResponse));
interpolMap.put(“interpol”,gson.toJson(InterpolSolrResponse));

}
请告诉我如何使用java指定检索json中的solr文档-SolJSON文档没有指定如何在java中设置请求参数?前面关于solr用户列表的讨论应该会有所帮助-它没有真正回答我的问题似乎我必须阅读SolrDocument并将键值对添加到JSONObject,以获取要返回给用户的有效json字符串。关于POJO方式,由于我的POJO包含复杂类型,我不得不将复杂类型添加为SolrPlugin并在schema.xml中定义它,但当我保存POJO时,复杂类型保存为null-关于如何使其工作的任何建议?SolrJ仅支持简单类型不支持复杂类型-请参阅前面的答案-此外,使用SolrJ库没有直接从Solr获取JSON的本机方法。如前所述,Jackson库可以为您处理SolrDocument到JsonObject的转换。或者,您可以直接使用http调用(通过java http客户端库)然后使用SolJson技术从Solr获得JSON响应。我刚刚发现JSONUtil存在异常错误并生成一些奇怪的递归文档。我从Solr 5.2升级到7.6,在将Solr文档转换为JSON时,我遇到了StackOverflower错误(com.fasterxml.jackson.databind.type.TypeFactory)。将JSON写入程序更改为noggit的写入程序解决了这个问题。