2011-02-08 9 views
0

SOLR을 (를) searcher로 사용하고 있습니다. 나는 표준 SolrServlet을 검색 자로 사용하고있다.SOLR 검색 결과 가져 오기

final SolrCore core = SolrCore.getSolrCore(); 
SolrServletRequest solrReq = new SolrServletRequest(core, request); 
SolrQueryResponse solrRsp = new SolrQueryResponse(); 
try { 

    SolrRequestHandler handler = core.getRequestHandler(solrReq.getQueryType()); 
    if (handler==null) { 
    log.warning("Unknown Request Handler '" + solrReq.getQueryType() +"' :" + solrReq); 
    throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,"Unknown Request Handler '" + solrReq.getQueryType() + "'", true); 
    } 
    core.execute(handler, solrReq, solrRsp); 
    if (solrRsp.getException() == null) { 
    QueryResponseWriter responseWriter = core.getQueryResponseWriter(solrReq); 
    response.setContentType(responseWriter.getContentType(solrReq, solrRsp)); 
    PrintWriter out = response.getWriter(); 
    Set<String> fields = new HashSet<String>(); 
    fields.add("content");   
    solrRsp.setReturnFields(fields); 
    responseWriter.write(out, solrReq, solrRsp); 

나는 정확한 대답을 얻고 있습니다.하지만 내가 묻는 것은 작성자가 작성하기 전에 응답의 내용을 어떻게 얻을 수 있습니까? 반환 값은 doc이며, 나는 얻고 자하는 문서에 "content"라는 필드가 있지만 응답 페이지가 생성되기 전에는 알 수 있습니다.

덕분에 많은

답변

2

자바 SOLR을 사용하는 표준 방법은 SolrJ하는 것입니다. SolrServletRequest, SolrRequestHandler 등은 일반적으로 소비자가 사용하지 않는 Solr의 "내부"클래스입니다.

일반적으로 권장하지 않지만 embed Solr in your application 일 수도 있습니다.

+0

답변을 주셔서 감사합니다. 상황을 입력하십시오. 필드의 콘텐츠를 가져 오는 방법이 있습니까? 새로운 앱을 만들고 싶지 않기 때문에 solr 자체를 항상 같은 쿼리로 사용하십시오. 솔직히 말해서 SolrServlet의 소스 코드를 얻고 web.xml을 다시 매핑합니다. 이 서블릿 내부에 들어갈 수 있지만 필드의 값을 가져 오는 방법을 알지 못합니다. – boban

+1

플러그인으로 이미 포함되어있는 속도를 사용해보십시오. 더 간단해야합니다. – Karussell