Solr之How之粉墨登场

来源:互联网 发布:中国对外关系知乎 编辑:程序博客网 时间:2024/04/27 22:36

上一篇记下了Solr 的What与Why,接下来就开始Solr的How专题。第一个话题是 粉墨登场


在这一章节,我们将一块看看Solr的下载包究竟有哪些东东,Solr可以在哪些个应用服务器跑, Solr在坑爹的OC4J下面究竟会发生什么事情,以及multiple core


1. 安装

从Solr的官网上下载到的包解压后,可以看到里面有好多个文件夹,我们这里只关注几个重要的

  •  dist: 这个文件夹里面的东西就是 Solr的war包,以及一些外围的jar文件

          > solr.war: 这就是Solr的包,里面包括了Solr所需要用到的基本jar文件,以及Solr admin console

          > solrj-lib:如果需要在Java系统与Solr进行交互,那么Java系统所需要的跟Solr有关的lib都在这个文件夹里面

          > apache***.jar: 这是solr的扩展包,包括data import, clustering 等等

          > example: 这个文件夹提供了一个超级完整的solr例子,包括了single core, multiple core, data import (包括xml, csv, json格式), 以及jetty。如果你看到这里烦了,就想直接看看solr出来后是什么样子的话,直接运行example/start.jar, 然后在IE打开http://localhost:8983/solr/,这时你就可以看到一个完整的solr console了!走起!


2.  服务器支持

       Solr支持的服务器有Jetty,Tomcat,JBoss,Glassfish,Resin, Weblogic 以及WebSphere。而我们系统用的是OC4J,这下就坑爹了!只要一进去Admin管理页面,那个Exception就锲而不舍地扔exception,直至栈溢出方休!好几次好想放弃Solr,但又舍不得。十极无路,只好拿下源代码,debug!发现当请求的URL里面带有admin的字符,SolrDispatcherFilter就会将这个请求forward出去,而OC4J不知道就咋的啦,再把这个请求forward给SolrDispatcherFilter,这不就进入了坑爹的死循环嘛~!貌似Solr真心不喜欢OC4J,木有办法,只好绕行:如果第一次进去这个forward,就在http请求里面加个attribute isSolrForward;而每次判断要不要进入forward之前,再加一个判断,如果isSolrForward已存在的话,就不进去这段逻辑。这样就能绕开OC4J这个bug


3. Multi core

      Solr与Multi core的关系就相当在一个OC4J里面 可以部署多个应用程序,这样这多个应用程序可以共享同一个Solr服务器里面的资源,而它们各自之间的配置,index文件等等都是独立的。每一个core都需要在solr.xml里面注册

                        <coresadminPath="/admin/cores">

                                        <core name="core0"instanceDir="core0" />

                                       <core name="core1"instanceDir="core1" />

                           </cores>



原创粉丝点击