我正在尝试使用某些字段查询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));
}
答案 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);