在 tomcat 中运行 solr

基于 solr 进行开发,少不了要在 tomcat 中运行 solr,这里以 windows + tomcat 6.0 + solr 3.5 为基础讲解在 tomcat 中部署 solr 的过程。

首先在 solr 的发行包中 apache-solr-3.5.0\dist 下找到 apache-solr-3.5.0.war,将其复制到 tomcat/webapp 下,启动 tomcat ,tomcat 会将 war 包解压开,然后会报一个错误,说在 tomcat/bin 目录下找不到 solr/home ,现在可以先关闭 tomcat ,找到  apache-solr-3.5.0 文件夹(就是war包被 tomcat 解压出来的),打开 Tomcat 6.0\webapps\apache-solr-3.5.0\WEB-INF 下的 web.xml,将
<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/put/your/solr/home/here</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
的注释去掉,将  /put/your/solr/home/here  的值改成 solr 配置文件所在的位置(solr/home),如:D:/apache-solr-3.5.0/example/solr。保存文件再运行 tomcat,正常情况下,此次启动不会报错了,启动完成后,在浏览器中输入

http://localhost:81/apache-solr-3.5.0/admin/

就可以看到 solr 的管理界面了,此时 solr 3.5 在 tomcat 中部署成功了。

至于 solr/home 的配置,除了像本例在配置在 web.xml 中,还可以配置在系统环境变量中(像 java_home 类似的配法),也可以 tomcat 启动命令行中增加

JAVA_OPTS=”-Dsolr.solr.home=/Users/jonathan/Desktop/solr”

阿丁比较推荐的做法是按本例中的方式,配置在 web.xml 中,这样对tomcat、操作系统影响最少,换一个 tomcat 只需将修改自己本身的 web.xml 就行。

solr 中文分词

要在中文的项目中使用 Solr ,少不了要集成中文分词组件。本篇以 IK2012 分词为例,讲解如何在 solr 3.5 中及集成中文分词,使用 IK 的原因 IK 比其他中文分词维护的勤快,和 Solr 集成也相对容易。

首先需要弄到 IKAnalyzer2012.jar ,可以从这里下载到

http://code.google.com/p/ik-analyzer/downloads/list

这里选择 IKAnalyzer2012_u5.zip 下载,下载后解压,将解压出来的 IKAnalyzer2012.jar 复制出来。在 D:\apache-solr-3.5.0\example\solr 下新建 lib 目录,将 IKAnalyzer2012.jar 放入 lib 下。打开 “D:\apache-solr-3.5.0\example\solr\conf\schema.xml” ,在 types 节点下 添加

<fieldType name="text_zh" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart ="false"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart ="false"/>
      </analyzer>
    </fieldType>

然后在 fields 节点下引用 text_zh 这一字段类型,如下所示:

 <field name="title" type="text_zh" indexed="true" stored="true"/>

这样标题字段就支持中文分词了。

这里是完整的 solr 集成中文分词后的 schema.xml 示例文件:schema.xml

notice

之前一直用 1.4 版本的 solr ,现在翻译的这些文章基本是基于solr 3.5 的,solr 3.5 较 solr 1.4 多了不少的参数,在翻译过程,没用过也很没把握,所以决定没用过的参数都尽量试试,例子也尽量用中文的示例文件,所以后续章节中将集成中文支持。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress