solr响应xml格式

问题描述:

我想查询Solr使用某些领域,我想在XML格式的响应。不知何故,我无法获得XML格式的响应,即使我已将解析器设置为XMLResponseParser。请检查代码,让我知道什么是错在这里:solr响应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)); 
} 

你的代码是用SolrJ作为Solr客户端。正是为了避免处理XML响应,它提供了一种干净的方式将Solr结果作为对象返回到代码中。

如果你想得到原始的XML响应,只需拿起任何Java HTTP客户端,建立请求并将其发送到Solr。你会得到一个不错的XML字符串...

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

+0

我们可以将SolrDocumentList转换为xml格式吗? – user3161879

由于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);