2014-02-05 111 views
1

我想查詢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)); 
} 

回答

0

你的代碼是用SolrJ作爲Solr客戶端。正是爲了避免處理XML響應,它提供了一種乾淨的方式將Solr結果作爲對象返回到代碼中。

如果你想得到原始的XML響應,只需拿起任何Java HTTP客戶端,建立請求並將其發送到Solr。你會得到一個不錯的XML字符串...

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

+0

我們可以將SolrDocumentList轉換爲xml格式嗎? – user3161879

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