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的查询部分
答
由于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);
我们可以将SolrDocumentList转换为xml格式吗? – user3161879