solr4 facet 原始碼流程分析

2021-06-18 16:17:52 字數 977 閱讀 5659

首先說下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...