Java:以XML格式获取Solr的响应

时间:2018-01-16 00:28:41

标签: java xml solr lucene

我是索尔的新手。我想使用Java连接到我的solr核心,并以XML格式返回结果。通过参考官方文档,我能够以二进制形式获得结果。以下是我的代码:

public static void main(String[] args) throws SolrServerException, IOException {


        String urlString = "http://localhost:8983/solr/index1/";
        SolrClient solr = new HttpSolrClient.Builder(urlString).build();


        SolrQuery query = new SolrQuery();
        query.setQuery("*:*");


        QueryResponse response = solr.query(query);
        System.out.println(response.toString());
    }

我还尝试研究如何获得回应。我找到了这个链接,上面写着“如果你想得到原始的xml响应,只需选择任何java HTTP客户端,构建请求并将其发送给Solr。你将获得一个很好的XML字符串..”solr response in xml format 我编写了以下代码,但它没有给我回复

public static void main(String[] args) throws ClientProtocolException, IOException
{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet("http://localhost:8983/solr/index1/select?q=*:*&wt=xml");
    CloseableHttpResponse response1 = httpclient.execute(httpGet);

    System.out.println(response1);
}

}

输出:

HttpResponseProxy{HTTP/1.1 200 OK [Content-Type: application/xml; charset=UTF-8, Transfer-Encoding: chunked] ResponseEntityProxy{[Content-Type: application/xml; charset=UTF-8,Chunked: true]}}

在官方网站https://lucene.apache.org/solr/guide/6_6/using-solrj.html上,提到使用

solr.setParser(new XMLResponseParser());

获取XML响应,但我不知道如何使用它,因为没有给出任何示例。任何帮助表示赞赏。

编辑: 正如John的评论中所提到的,我将代码修改为:

System.out.println(EntityUtils.toString(response1.getEntity()));

但是在输出中,我可以看到一些javascript,后面跟着XML输出: enter image description here

在Solr中,XML中的输出如下所示: enter image description here

1 个答案:

答案 0 :(得分:0)

没试过,但它应该有效,

您需要初始化org.apache.solr.client.solrj.SolrClient,表示您要使用的Solr实例,如下所示。

import org.apache.solr.client.solrj.impl.XMLResponseParser;

String serverURL = "http://localhost:8983/solr/<core_name>";
SolrClient solr = new HttpSolrClient.Builder(serverURL).build();

solr.setParser(new XMLResponseParser());