2013-02-09 5 views
1

solrj를 사용하여 solr에 쿼리를 제출하면 json 형식으로 결과가 반환됩니다.solrj QueryResponse를 json으로 변환

SolrQuery query = new SolrQuery();  
SolrQuery query = new SolrQuery(); 
query.setParam("kw", keyword); 
query.setParam("lc", location); 
query.setParam("wt", "json"); 
query.setParam(CommonParams.QT, "/lds"); 
QueryResponse qResponse = solrServer.query(query); 
searchResultStr = qResponse.toString(); 

그러나 searchResultStr에는 JSON 형식의 문자열이 없습니다. 대신이 같은 있습니다

{responseHeader = {상태 = 0, QTime = 21}, 위치 = {has_zipcode = 사실, location_param을 = 94085}}

그러나 내가 직접 타격 경우

{ "responseHeader": { "상태": 0, "QTime": 15}, "위치": { "has_zipcode"사실, "브라우저에서 SOLR URL이, 내가 올바른 JSBON 형식을 얻을 location_param ":"94085 "}}

답변

0

JSON 출력의 경우 대답 here에서 설명한대로 curl을 사용하여 HTTPSolrServer을 쿼리해야합니다. EmbeddedSolrServer을 사용하면 solrj과 같이 도움이되지 않습니다. 당신이 쿼리 solrj를 사용하는 경우

당신은 QueryResponse 개체에서 SolrDocumentList를 얻을 당신이 원하는 방식으로 각 SolrDocument을 반복하고 JSON에 데이터를 입력하여 JSON 형식으로 변환해야합니다.

0

Solr QueryResponse는 해시 맵을 반환하므로 json 변환기에 대한 해시 맵을 사용하여 json을 가져옵니다. 여기 나는 그 변환을 위해 Gson()을 사용했다.

QueryResponse response = solr.query(query); 
Gson gson = new Gson(); 
String json = gson.toJson(response.getResults()); 
System.out.println(json);