2011-02-08 151 views
0

我是使用SOLR作爲搜索者的新手。我使用標準的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

在Java中使用的Solr的標準方式是通過SolrJ。 SolrServletRequest,SolrRequestHandler等是Solr的「內部」類,並不意味着被消費者普遍使用。

您也可以embed Solr in your application,雖然它通常不被推薦。

+0

感謝您的回答,把事情是,有沒有什麼辦法只是爲了獲得該領域的內容?因爲我不想創建一個新的應用程序,只需使用solr本身,並始終使用相同的查詢。我真的,得到SolrServlet的源代碼,並重新映射它的web.xml。我正在進入這個servlet,但不知道如何獲得該字段的價值。 – boban 2011-02-08 04:11:31