Solr5.0源码分析-SolrDispatchFilter
2015-11-24 19:31
295 查看
年初,公司开发法律行业的搜索引擎。当时,我作为整个系统的核心成员,选择solr,并在solr根据我们的要求做了相应的二次开发。但是,对solr的还没有进行认真仔细的研究。最近,事情比较清闲,翻翻solr的源码,加深对solr的认识。在博客园上看到Ryan的Solr4.8.0源码分析(http://www.cnblogs.com/rcfeng/),跟着前人的脚步学习一下,并把5.0版本改动后的源码做一点补充。有什么不妥的地方,请Ryan谅解,或者联系我 QQ:503172601
5.0相对于4.8版本,扩充了cloud的功能。我们以tomcat容器为例,先看SolrDispatchFilter的实现。
View Code
SolrResourceLoader主要是做了3个事情
创建类装载器,加载lib目录下的类,装在LuceneSPI。
然后
(4)解析solr.xml文件
解析solr.xml文件,通过sorl.xml的地方从本地或者zookeeper的获取solr.xml文件。
然后调用SolrXmlConfig.fromSolrHome和SolrXmlConfig.fromInputStream解析solr.xml文件封装为NodeConfig。
(5)实例化一个CoreContainer,通过CoreContainer来加载cores
5.0相对于4.8版本,扩充了cloud的功能。我们以tomcat容器为例,先看SolrDispatchFilter的实现。
public SolrResourceLoader( String instanceDir, ClassLoader parent, Properties coreProperties ) { if( instanceDir == null ) { this.instanceDir = SolrResourceLoader.locateSolrHome(); log.info("new SolrResourceLoader for deduced Solr Home: '{}'", this.instanceDir); } else{ this.instanceDir = normalizeDir(instanceDir); log.info("new SolrResourceLoader for directory: '{}'", this.instanceDir); } this.classLoader = createClassLoader(null, parent); addToClassLoader("./lib/", null, true); reloadLuceneSPI(); this.coreProperties = coreProperties; }
View Code
SolrResourceLoader主要是做了3个事情
创建类装载器,加载lib目录下的类,装在LuceneSPI。
然后
(4)解析solr.xml文件
解析solr.xml文件,通过sorl.xml的地方从本地或者zookeeper的获取solr.xml文件。
然后调用SolrXmlConfig.fromSolrHome和SolrXmlConfig.fromInputStream解析solr.xml文件封装为NodeConfig。
(5)实例化一个CoreContainer,通过CoreContainer来加载cores
相关文章推荐
- LightOJ 1166 Old sorting(贪心/模拟?)
- Socket套接字
- 全局内存
- 【学神-RHEL7】1-1-课程介绍和RHEL7.1操作系统安装-VMware使用方法
- 5.7 细分阶段
- jquery的插件写法
- 3.面向对象
- Mysql数据类型
- 实验五报告 20135209潘恒 20135204郝智宇
- Lucene 学习笔记
- mysql 表空间及索引的查看方法
- 共享内存与线程局部存储
- 如何确定LDA的topic个数
- TextView设置android:ellipsize=marquee不滚动
- ORACLE触发器详解
- netty ssl
- 信息安全系统设计基础实验二—20135215黄伟业20135222胡御风
- cql
- A.挑战密室
- 读书笔记--Android布局和UI组件中的布局管理器