Solr1.3的启动过程分析一

14 篇文章 0 订阅
9 篇文章 0 订阅

转自: :宋永维 http://damoqingquan.iteye.com/

1.  Solr1.3中使用初始化工具Initializer的实例来获得CoreContainer的对象。常规的步骤如下:

    -------------------------------------------
    Initializer initializer=new Initializer();
    //获得配置文件名,如果不调用该方法,将使用默认的solr.xml
    init.setSolrConfigFilename(config.getInitParameter("solrconfig-filename"));
    //设置如果启动出错是否停止
    setAbortOnConfigurationError(boolean abortOnConfigurationError);
    CoreContainer cores=init.initialize();
2.调用init.initialize()时都做了些什么事情?
   //使用下面语句获得主目录,例如:D:\search_engine\multicore/
   String instanceDir = SolrResourceLoader.locateInstanceDir();
   //获取主目录路径下的配置文件solr.xml,当为非多核的时候它是不存在的,所以下面就针对该文件是否存在出现了if-else分支。
  File fconf = new File(instanceDir, solrConfigFilename == null? "solr.xml": solrConfigFilename);
  2.1如果存在配置文件,通过下面的语句获得多核实例,也就是这两句代码这里,所有的核都已经创建了
   cores = new CoreContainer();
   cores.load(instanceDir, fconf);
  //接来的部分就是设置abortOnConfigurationError和solrConfigFilename连个属性而已。
 
  2.2如果不存在配置文件,采用下面的方法创建一个SolrCoreContainer实例。
    //这里仅仅是设置CoreContainer的load(SolrResourceLoader)属性,显然它是与主目录相关的了。
    cores = new CoreContainer(new SolrResourceLoader(instanceDir));
    //获取配置文件名,solrConfigFilename 为空则使用默认的文件名solrconfig.xml。
    SolrConfig cfg = solrConfigFilename == null ? new SolrConfig() : new SolrConfig(solrConfigFilename);
    //获得CoreDescriptor实例,三个参数依次为核容器,名字,主目录
    CoreDescriptor dcore = new CoreDescriptor(cores, "", ".");
    //创建一个SolrCore 对象,五个参数一次为 name, Dir, SolrConfig实例(代表配置文件),IndexSchema实例schema(代表域模式), CoreDescriptor(核描述器).
    SolrCore singlecore = new SolrCore(null, null, cfg, null, dcore);
    //上面很多地方使用了null,我们很容易想到内部使用了默认值
    //下面一句很显然是将singlecore这里核添加到cores中去
    cores.register("", singlecore, false);
    //这里是设置persistent属性
    cores.setPersistent(false);
    //对于solrConfigFilename以及abortOnConfigurationError的设置就不用说了
    //最后就是返回CoreContainer的实例了


cores.load(instanceDir, fconf);到底做了哪些事情呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值