玩转Solr源码之—Solr源码Debug
这篇文章是玩转Solr源码系列的第二篇,紧接着上一篇的源码导入,如果你还对如何将Solr源码导入到IDE还不了解的话,建议先看源码导入的部分。
定位源码入口
Solr 的源码入口为org.apache.solr.client.solrj.StartSolrJetty,主方法也比较简短,
1 | public static void main( String[] args ) |
配置Solr Home
为了能够进行源码的bug,我们需要配置好solr_home,这里我们可以直接使用官方的Solr发行包中的example来做演示(真实的开发中,一般会有自己定义好的solr_home),直接下载solr的发行包(这里以solr-7.7.2为例子)
1 | cd ~/Documents |
这里简单解释下最后一个命令(echo “collection=TEST …”)的含义,Solr中有collection和core的概念。
- Collection
Solr中的collection由一个或者多个core组成,一个collection对应一份独立的config,在单节点的模式下,core和collection是等价的,在集群模式下,一个collection会有多个分片(shard)组成,每个分片又可以又多个副本(replica),每个shard对应一个core- core
Solr中的core是一个包含index和config的运行实例配置StartSolrJetty
solr中的solr_home 可以通过通过环境变量进行设置,直接上代码
1 System.setProperty("solr.solr.home", "/home/fql/Documents/solr_home");
还有一个地方需要改动,否则程序无法正常启动,直接上代码
1 | bb.setWar("webapp/web"); ==> bb.setWar("solr/webapp/web"); |
设置完毕之后就可以启动StartSolrJetty后直接在浏览器中输入http://127.0.0.1:8983/solr就可以开始畅游solr的源码啦.
小技巧
StartSolrJetty默认的配置是没有太多的日志输出的,但是既然我们都已经开始debug solr的源代码了,还是输出更多的日志帮助我们更好的分析源码吧,同样,开启debug日志的代码也比较简单
1 | System.setProperty("log4j2.debug","true"); |
这样我们就剋有看到所有的日志啦。下一篇我们将要介绍如果将修改过的solr源码部署到公司或者个人的nexus仓库,也是本系列的最后一篇。
v1.5.2