欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

tomcat + solr + IK 全过程

程序员文章站 2022-05-17 18:53:36
...
solr初触,在用jetty跑通以后,开始在tomcat下进行配置。
首先,下载最新版的solr ,http://apache.dataguru.cn/lucene/solr/4.2.1/

1:将dist目录下的solr-4.2.0.war 复制到tomcat 下的webapps根目录,重命名为solr.war,运行tomcat,solr.war被解压。

2:在tomcat根目录(可以是任何目录)新建文件目录solr/home,将solr-4.1.0\example下的solr复制到solr/home目录下,如果要配置多核,只用复制solr-4.1.0\example\multicore下的core0、core1、solr.xml复制到solr/home

3: 找到 webapps\solr\WEB-INF下的web.xml,配置solr/home信息
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:/apache-tomcat-7.0.34/solr/home</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>


到这里,就可以测试一下了.运行tomcat,访问http://127.0.0.1:端口号/solr/admin
如果看到solr的主页面,并且没有错误信息,说明已经配置成功。


如此,我们来进行更细致的配置
4:上面有提到多核,配置如下。
复制solr-4.1.0\example\multicore下的core0、core1、solr.xml复制到solr/home,找开
solr.xml,找到cores标签,默认的配置是core 0、core1.可根据需求进行修改,我
有如下两个业务,需要两个不同的core,如下配置。
  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
    <core name="EMAIL" instanceDir="email" />
    <core name="IM" instanceDir="im" />
  </cores>

其中,name就是我们访问时的名称,instanceDir为solr/home下的core0、core1,这里作相应的修改

重启tomcat,访问http://127.0.0.1:8089/solr/#/EMAIL
http://127.0.0.1:8089/solr/#/IM  进行测试[/color]

其中,solr/home/EMAIL与IM下,最重要的文件就是schama.xml,所以的索引字段都在这里面进行配置,主要有两个标签<field> 与 <fieldType>
    <schema name="im core im" version="1.1">
        <types>

<fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="text_cn" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
    </types>
    <fields>
   <field name="id" type="int" indexed="true" stored="true" multiValued="false"/>
   <field name="name" type="text_cn" indexed="true" stored="true" multiValued="true"/>
   <field name="city" type="text_cn" indexed="true" stored="true" multiValued="true"/>
   </fields>

其中,库名要与当前的库名匹配<schema name="im core im" version="1.1">, indexed是否建索引,stored是否保存,multiValued是否多个值,根据具体的需求进行配置。


5:上面有个name="text_cn"的类型,这个就是接下来要进行的分词。
我选择了IK分词器。在配置的过程中,遇到一个问题:
java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method tokenStream.(Ljava/lang/String;Ljava/io/Reader;)Lorg/apache/lucene/analysis/TokenStream;


原因是我最开始用的是IK3.2.8  与 当前solr的版本冲突。重新下载 2012 ff 后问题得到解决。下载地址为:http://code.google.com/p/ik-analyzer/downloads/detail?name=IK%20Analyzer%202012FF_hf1.zip&can=2&q=


将IKAnalyzer2012FF_u1.jar拷贝到D:\apache-tomcat-7.0.34\webapps\solr\WEB-INF\lib目录下;
IKAnalyzer.cfg.xml(分词器扩展配置文件)与stopword.dic(扩展的stopword词典,3.2以上版本提供)文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j等配置文件相同)下即可.


重启tomcat,进入http://127.0.0.1:8089/solr/#/EMAIL/analysis  (IM同)输入如:“我是美女屌丝程序员”进行测试。










[/size][/color]