2012-10-22 3 views
2

json 형식으로 데이터를 반환하는 SolrQuery는 어떻게 지정합니까? 데이터 쿼리에 사용하고있는 코드가 있습니다. SolrDocument를 얻은 후 어떻게 json Object/string으로 변환 할 수 있습니까?solrj를 사용하여 json 형식의 SolrDocument 검색

SolrQuery sQuery = new SolrQuery(); 
sQuery.setQuery("name:test"); 
QueryResponse resp = server.query(sQuery); 
SolrDocumentList docs = resp.getResults(); 

답변

3

SolrJ는 정의 된 POJO로 문서를 검색/변환하도록 설계되었습니다. 문서를 JSON으로 변환하려면 Jackson과 같은 라이브러리를 사용하여 SolrDocument에서 JSON으로 변환해야합니다.

이 옵션을 사용할 수 있을지 확실하지 않지만 이미 JSON으로 포맷 된 Solr의 응답을받는 것이 좋습니다. 자세한 내용은 SolJSON을 참조하십시오. 이 경우에는 SolrJ를 사용할 필요가 없습니다. 가장 쉬운 방법은 (java http 클라이언트 라이브러리를 통해) 직접 http 호출을 사용하고 SoljSON 기술을 사용하여 Solr에서 JSON 응답을 다시 얻는 것입니다. solrj에서

+0

유 말해 주시겠습니까 - SolJSON 문서는 자바 요청 PARAM을 설정하는 방법을 지정하지 않습니다? – rrr

+0

Solr 사용자 목록에 대한 이전 토론이 도움이 될 것입니다. - http://lucene.472066.n3.nabble.com/SolrJ-Response-JSON-td1002024.html –

+0

실제로 내 질문에는 대답하지 않았습니다. SolrDocument를 만들고 JSONObject에 키 값 쌍을 추가하여 유효한 json 문자열을 사용자에게 반환하십시오. 내 Pojo가 복잡한 유형을 포함하고 있기 때문에 POJO 방식에 대해서는 복잡한 유형을 SolrPlugin으로 추가하고 schema.xml에 정의해야했지만 POJO를 저장할 때 null로 저장된 복합 유형 - 그 작업을 수행하는 방법에 대한 제안은 무엇입니까? – rrr

15

가져 JSONUtil 클래스, 그것은 SOLR 문서를 JSON 변환이 있거나 해당 클래스의 코드를 보면 쉽게 하나를 쓸 수 있습니다 :

import org.apache.noggit.JSONUtil; 

SolrQuery sQuery = new SolrQuery(); 
sQuery.setQuery("name:test"); 
QueryResponse resp = server.query(sQuery); 
SolrDocumentList docs = resp.getResults(); 
String returnValue = JSONUtil.toJSON(docs); //this has the json documents 
+1

JSONUtil이 버그를 괴롭 히고 이상한 재귀 적 문서를 생성한다는 어려운 방법을 발견했습니다. –

0

당신은 또한 GSON를 사용 할 수 있습니다. 내가 JSON 사용하여 자바에서 SOLR의 문서의 검색을 지정 얼마나

SolrDocumentList SolrResponse = searchWithSolr(); 
 
Gson gson = new Gson(); 
 
if (SolrResponse.size()!=0) { 
 
    System.out.println(gson.toJson(SolrResponse)); 
 
    interpolMap.put("interpol", gson.toJson(InterpolSolrResponse)); 
 
}

관련 문제