2014-02-05 2 views
1

특정 필드를 사용하여 Solr을 쿼리하려고하는데 XML 형식의 응답을 원합니다. 필자는 파서를 XMLResponseParser으로 설정해도 XML 형식의 응답을 얻을 수 없습니다. 코드를 확인하고 나를 여기에 어떤 문제가 있는지 알려 주시기 바랍니다 : 귀하의 코드는 Solr 클라이언트로 SolrJ을 사용xml 형식의 solr 응답

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

. XML 응답을 피하기 위해 정확히 수행되었으므로 Solr 결과를 코드로 다시 객체로 가져 오는 명확한 방법을 제공합니다.

원시 XML 응답을 받으려면 모든 Java HTTP 클라이언트를 가져 와서 요청을 작성한 다음 Solr으로 보내십시오. 당신은 ... 멋진 XML 문자열을 얻을 것이다

참고 : 당신은 당신의 URL의 쿼리 부분을 구축 할 ClientUtils.toQueryString(SolrParams params, boolean xml)을 사용할 수 있습니다

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