首先說下solr facet流程中會牽扯到類:
1,searchhandler
2,querycomponent
3,facetcomponent
4,solrindexsearcher
1,searchhandler說明
請求處理起始,會呼叫請求中所有的component,不僅僅是query、facet。
2,querycomponent 3,facetcomponent
都是查詢處理元件,所以**流程都相同,主要方法如下:
prepare、process、distributedprocess
4,solrindexsearcher
具體的執行查詢的searcher
對於有facet的請求跟沒有facet的請求的流程在此執行是不一致的,分別走兩個不同的方法,如下:
getdoclistandsetnc
getdoclistnc
3,facetcomponent中的主體處理方法肯定就是process了,**如下:
/*** actually run the query
*/@override
public void process(responsebuilder rb) throws ioexception
}// todo ???? add this directly to the response, or to the builder?
rb.rsp.add( "facet_counts", counts );}}
後面可以看下******facets的getfacetcounts**,比較一目了然,
說明:根據不同的facet的引數返回不同的查詢統計資料
public namedlistgetfacetcounts() catch (ioexception e) catch (syntaxerror e)
return facetresponse;
}
solr原始碼 一 編譯執行
svn git 二 編譯並匯入eclipse 在根目錄執行ant eclipse,初始化相關jar包和eclipse配置 提前配置好ant和ivy 三 執行 新增到tomcat並啟動。四 注意事項 在啟動tomcat後,會報spi載入失敗的錯誤。這是因為lucene solr原始碼中,有很多 res...
Solr查詢過程原始碼分析
searchhandler.handlerequestbody solr搜尋主流程 1.呼叫 requesthandlerbase handlerequest req,rsp 2.原始碼分析 prepare 前期的請求引數準備工作,querycomponent可以在schemal檔案中設定,易擴充套...
mapreduce job提交原始碼流程
waitforcompletion submit 1建立連線 connect 1 建立提交job的 newcluster getconfiguration 1 判斷是本地yarn還是遠端 initialize jobtrackaddr,conf 2 提交job submitter.submitjob...