# solr-source
**Repository Path**: dwjf321/solr-source
## Basic Information
- **Project Name**: solr-source
- **Description**: solr源码
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-10-30
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# solr-source
#### 项目介绍
solr源码
#### solr启动流程
入口 SolrDispatchFilter继承BaseSolrFilter
这是一个全局的过滤器Filter
获取filter配置中的excludePatterns ,实际上就是配置不经过filter的路径
1、init方法,初始化solr core容器
1.1 从配置文件总到达/solr/home的路径
1.2 创建solr core容器
1.2.1 获取配置文件,包含zookeeper配置
2、doFilter方法,全局性的过滤,将对特定的需要全文检索的请求进行一个过滤然后提供全文检索服务
####执行查询过程
protected volatile CoreContainer cores;
HttpSolrCall call=getHttpSolrCall(request, response, retry)
Action result = call.call();
查看源码时,一方面是想知道solr在处理请求的时候有哪些过程,另一方面是为了实际开发做准备
####构造方法
1、获取CoreContainer
2、设置查询参数
####call();
####init();
2、通过corename获取对应的solrcore
Solrcore core = cores.getCore("core1");
3、获取SolrConfig对象
SolrConfig config = core.getSolrConfig();
4、获取SolrRequestParsers解析对象
SolrRequestParsers parser = config.getRequestParsers();
5、得到查询请求对象
SolrQueryRequest solrReq = parser.parse(core,"select",req);
6、实例化SolrQueryResponse
SolrQueryResponse solrRsp = new SolrQueryResponse();
7、获取对应handler处理器
SolrRequestHandler handler = core.getRequestHandler(path);
8、设置查询参数
addCollectionParamIfNeeded();
####execute();
9、执行查询
execute(solrRsp);
10、获取响应结果
QueryResponseWriter responseWriter = getResponseWriter();
####solr缓存使用
1、httpcache
启用缓存配置如下:
max-age=30, public
max-age:缓存时间,单位秒
public:所有资源都应用
checkETagValidators和checkLastModValidators主要是用来判断当前的搜索请求request的请求
头header的If-Modified-Since和If-None-Match的两个值
2、filterCache
主要是用来缓存fq查询的结果和基本的枚举类型
size="512"
initialSize="512"
autowarmCount="0"/>
class:指定使用solr的哪种缓存机制,有LRUCache和FastLRUCache
LRUCache:基于LinkedHashMap实现的,在get和put方法加了synchronized锁
FastLRUCache:基于ConcurrentHashMap实现的。
size:允许分配多少个实体(entity)的缓存空间
initialSize:分配初始多少个实体(entity)的缓存空间
autowarmCount:自动预装入实体个数
3、queryResultCache
缓存查询结果集
size="512"
initialSize="512"
autowarmCount="0"/>
4、documentCache
size="512"
initialSize="512"
autowarmCount="0"/>