xml格式的solr响应

时间:2014-02-05 22:43:03

标签: java solr

我正在尝试使用某些字段查询Solr,我想要XML格式的响应。不知何故,即使我已将解析器设置为XMLResponseParser,我也无法以XML格式获得响应。请检查代码并告诉我这里有什么问题:

HttpSolrServer  solr = new HttpSolrServer(urlString);

String queryString ="*:*"; 
SolrQuery query = new SolrQuery(queryString); 
query.setQuery(queryString); 
query.setFields("type", "typestring");
query.addFilterQuery("id"); 
query.setStart(0); 
query.setRows(100); 

solr.setParser(new XMLResponseParser());

QueryResponse resp = solr.query(query);
SolrDocumentList results = resp.getResults();
for (int i = 0; i < results.size(); ++i) {
    // I need this results in xml format
    System.out.println(results.get(i));
}

2 个答案:

答案 0 :(得分:0)

您的代码使用SolrJ作为Solr客户端。这样做是为了避免处理XML响应,它提供了一种干净的方法来将Solr结果作为对象返回到代码中。

如果您想获取原始xml响应,只需选择任何Java HTTP Client,构建请求并将其发送到Solr。你会得到一个很好的XML String ...

注意:您可以使用ClientUtils.toQueryString(SolrParams params, boolean xml)构建网址的查询部分

答案 1 :(得分:-1)

正如Grooveek已经写过的那样,SolrJ旨在将XML解析作为库的用户从您身上移除。如果要查看XML,则需要自己获取响应。

SolrQuery query = new SolrQuery("*:*");
// set indent == true, so that the xml output is formatted
query.set("indent", true);

// use org.apache.solr.client.solrj.util.ClientUtils 
// to make a URL compatible query string of your SolrQuery
String urlQueryString = ClientUtils.toQueryString(query, false);

String solrURL = "http://localhost:8080/solr/shard-1/select";
URL url = new URL(solrURL + urlQueryString);

// use org.apache.commons.io.IOUtils to do the http handling for you
String xmlResponse = IOUtils.toString(url);

// have a look
System.out.println(xmlResponse);