首先说下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
{
if (rb.doFacets) {
SolrParams params = rb.req.getParams();
//SimpleFa