Solr应用开发——Solr home目录结构简介2
这篇文章接着上一篇文章,把Solr的home目录介绍完。所谓的Solr home目录实际上是一个运行的Solr实例所对应的配置和数据(Lucene索引)。在上一篇文章中我提到过在Solr的example/solr目录 就是一个Solr用做示例的默认配置home目录。实际上example/multicore也是一个合法的Solr home目录,只不过是用来做mult-core设置的。那么我们来看看example/solr这个目录里面都有些什么。
该目录下主要有以下一些目录和文件:
bin:如果你需要对Solr进行更高级的配置,该目录建议用来存放Solr的复制脚本。
conf :该目录下面包含了各种配置文件,下面列出了两个最为重要的配置文件。其余的.txt和.xml文件被这两个文件所引用,如用来对文本进行特殊的处理。
conf/schema.xml:该文件是索引的schema,包含了域类型的定义以及相关联的analyzer链。
conf/solrconfig.xml:该文件是Solr的主配置文件。
conf/xslt:该目录包含了各种XSLT文件,能将Solr的查询响应转换成不同的格式,如:Atom/RSS等。
data:包含了Lucene的二进制索引文件。
lib:该目录是可选的。用来放置附加的Java JAR文件,Solr在启动时会自动加载该目录下的JAR文件。这就使得用户可以对Solr的发布版本(solr.war)进行扩展。如果你的扩展并不对Solr本身进行修改,那么就可以将你的修改部署到JAR文件中放到这里。
上面已经介绍了Solr的home目录,那么Solr又是如何找到运行所需要的home目录的呢?
Solr首先检查名为solr.solr.home的Java系统属性,有几种不同的方式来设置该Java系统属性。一种不管你使用什么样的 Java应用服务器或Servlet引擎都通用的方法是在调用Java的命令行中进行设置。所以,你可以在启动Jetty的时候显式地指定Solr的 home目录java -Dsolr.solr.home=solr/ -jar start.jar。另一种通用的方法是使用JNDI,将home目录绑定到java:comp/env/solr/home。并向src/webapp/web/WEB-INF/web.xml添加以下一段代码:
1 | < env-entry > |
2 | < env-entry-name >solr/home</ env-entry-name > |
3 | < env-entry-value >solr/</ env-entry-value > |
4 | < env-entry-type >java.lang.String</ env-entry-type > |
5 | </ env-entry > |
实际上这段XML在web.xml文件中已经存在,你只需要把原来注释掉的xml取消注释,添加你所要指向的home目录即可。因为修改了web.xml文件,所以你需要运行ant dist-war来重新打包之后再部署WAR文件。
最后,如果Solr的home目录既没有通过Java系统属性指定也没有通过JNDI指定,那么他将默认指向solr/。
在产品环境中,我们必须设置Solr的home目录而不是让其默认指向solr/。而且应该使用绝对路径,而不是相对路径,因为你有可能从不同的目录下面启动应用服务器。
到此,就结束了Solr的整个目录结构的介绍,下一篇文章将试着向Solr中导入一些实验数据,并对其进行搜索测试。