2011-02-08 159 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