Apusic AS下如何正确设置solr

来源:互联网 发布:新开的超市怎录入数据 编辑:程序博客网 时间:2024/05/17 09:27

Apache Solr是一个基于Apache Lucene的企业级开源全文检索服务器,它支持层面搜索、命中醒目显示和多种输出格式。

Solr需要运行在一个servlet 容器里(因此目前几乎所有常见的Servlet容器都可以满足Solr的运行需要)。solr在lucene的上层提供了一个基于HTTP/XML的Web Services,应用需要通过这个服务与solr进行交互。

关于Solr的详细介绍,此处就不再赘述。关键是这么好的东西,网上相关的资料主要是关于如何使用,关于如何安装,由于各方面原因,只是在tomcat下如何配置相对较多,但是像AAS这样标准的JavaEE容器来说,tomcat下某些可以运行的东西,可能并不能正常运行。毕竟tomcat不是JavaEE容器,并且tomcat对JSR规范的追随与验证没有那么严格。(但是tomcat轻量并且免费,这就导致很多应用系统在开发时运行在tomcat下正常的代码迁移到Weblogic、WebShpere、Apusic等标准的JavaEE容器下之后,总是会抛出一些异常的原因)

Solr需要运行,必须在AS下指定Solr home,对于如何指定,网上介绍的总体来说有4种:

1. 设置java 的系统参数solr.solr.home

 如 -Dsolr.solr.home=E:\app\solr

2. 设置JNDI lookup "java:comp/env/solr/home"

3. 默认为./solr目录,即当前工作路径下的solr

由于工作路径容易造成问题,因此一般不推荐这种方式。

4.在包含 solr 目录的目录中启动 servlet 容器。(默认的 Solr 主目录是当前工作目录下的solr。)

如果开发时在tomcat下直接配置了

在tomcat里配置java:comp/env/solr/home的一个JNDI指向solr的主目录(example目录下),建立/tomcat55/conf/Catalina/localhost/solr.xml文件。文件内容如下:

<Context docBase="E:/app/solr.war" debug="0" crossContext="true" >   <Environment name="solr/home" type="java.lang.String" value="E:/app/solr/solr" override="true" /></Context>

如果按照类似的方法在AAS下配置此文件,solr则会由于找不到指定的配置文件而无法正常启动,这是由于solr寻址的方式造成的。如果按照上述配置,solr会将上下文定位至AAS启动路径而不是应用存在的路径。解决此问题,只需要使用新的配置方式:

打开Solr应用下的web.xml文件,在文件中加入以下内容:

<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>E:/app/solr/solr</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>

重新启动AAS,OK!



原创粉丝点击