solr4.10和solr5.x ik分词器配置,(Deprecated--2017-04-23)

    xiaoxiao2023-09-06  145

    A:配置IK-Analyzer

    1、下载wltea-IK-Analyzer-2012FF-master,将IK-Analyzer-2012FF\dist中的IKAnalyzer2012_FF.jar和IKAnalyzer2012FF_u1.jar拷贝到:/home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib   (注意:这个wltea-IK-Analyzer-2012FF-master针对solr-4.10的还可以,但是针对其它版本的就不给力了,但是配置分词的方式大致相同)

    wltea-IK-Analyzer-2012FF-master的内容如下:

     

    2、将IK-Analyzer-2012FF\src中ext.dic、IKAnalyzer.cfg.xml、stopword.dic拷贝到/home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/classes中,拷贝完成之后的效果如下:

     

    3、进入:/home/software/solr-5.3.1/server/solr/docdetection/conf,修改schema.xml,配置域的类型fieldType:

    即在文件schema.xml中添加ik分词器相关的内容:

    <fieldType name="text_ik" class="solr.TextField">

       <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    </fieldType>

     

    4、配置field(相当于是要增加的索引字段),使用中文分词器的fieldType.即:

    <!--定义field,指定field的type属性为text_ik-->

    <field name="title_ik" type="text_ik" indexed="true" stored="true" />

    <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

    只有指定了type=”text_ik“了,才表示要进行分词。

     

    重启solr

     

    发现报如下错误:

     

    这是由于ik_不支持solr5.3导致的。

    解决办法是:https://github.com/EugenePig/ik-analyzer-solr5  下载这个然后直接编译 按照reademe 的说明配置即可

     

    5、下载zip版本,按照github上的说明,进行如下操作:

    使用maven进行打包:

    如果是在JDK8环境下,执行:

    source /etc/profile

    mvn clean install

    因为我的JDK环境是JDK8,所以执行下面的操作(注意尽可能不要再本地执行下面的命令,若可以,就直接在服务器上执行吧,不然便宜出来的ik的jar包可能还是不兼容服务器上的版本,具体的问题会在本文下面介绍,并含有解决方案):

     

    如果是在JDK7环境下,执行:

    mvn clean -Djavac.src.version=1.7-Djavac.target.version=1.7 install

     

    然后拷贝ik-analyzer-solr5-5.x.jarserver/solr-webapp/webapp/WEB-INF/lib 这个目录下:

     

    solrCoreschema.xml中进行如下配置(在实际过程中,我没有这样按照github上说的这两种方式配置分词)

    <fieldType name="text_ik" class="solr.TextField">  

      <analyzer type="index">

        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />

      </analyzer>

      <analyzer type="query">

        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />

      </analyzer>

    </fieldType>

    或者:

    <fieldType name="text_ik" class="solr.TextField">  

      <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>  

      <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>  

    </fieldType>

     

    如果在执行mvn clean install的时候报如下错误:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ik-analyzer-solr5: Fatal error compiling: invalid target release: 1.8 -> [Help 1]

     

    请检查你的 JAVA_HOME 设置,如果 JAVA_HOME设置存在, 它可能不是JAVA8.

     

    SolrCoreInitialization Failures

    docdetection: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: JVM Error creating core [docdetection]: org/wltea/analyzer/lucene/IKAnalyzer : Unsupported major.minor version 52.0

    出现上面的这个问题是本地编译的jkd版本和服务器上的jdk版本不一致导致的,可以通过在服务器上解决来解决这个问题! (比如:我本地使用的jdk版本是:1.8.0_111,服务器上使用的版本是:1.8.0_121,都是JDK1.8,但是发现并不能通用)

    下载apache-maven-3.3.9-bin.tar.gz

    tar -zxvf apache-maven-3.3.9-bin.tar.gz

    配置环境变量:

    #export JAVA_HOME=/usr/java/jdk1.7.0_79

    export JAVA_HOME=/usr/local/jdk1.8.0_121

    export MAVEN_HOME=/home/software/apache-maven-3.3.9

    export MONGODB_HOME=/usr/local/mongodb

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export PATH=$PATH:$JAVA_HOME/bin:$MONGODB_HOME/bin:$MAVEN_HOME/bin

     

    将ik-analyzer-solr5-master.zip上传到solr所在的服务器。使用maven对ik-analyzer-solr5-master重新打包,

    unzip ik-analyzer-solr5-master.zip

    cd ik-analyzer-solr5-master

    在执行之前一定要执行下面的操作,不然可能会报错

    source /etc/profile     

    然后再执行下面的命令

    mvn clean install

    假设解压后的文件夹是:/home/software/ik-analyzer-solr5-master,里面的内容是:

     

    然后执行maven命令:mvn clean install

    root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master # cd  target/

    root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target# cp ik-analyzer-solr5-5.x.jar  /home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib/

     

    root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target# cd classes/

    root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target/classes# rm -rf org/

    root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target/classes#cp  -R *  /home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/classes/

     

    root@xxx:/home/software/solr-5.3.1#cd/home/software/solr-5.3.1

    root@xxx:/home/software/solr-5.3.1#bin/solr stop –all

    root@xxx:/home/software/solr-5.3.1#bin/solr start -all -noprompt  

     

    /home/software/solr-5.3.1/server/solr  (这个地方相当于是solrhome)下所有的schema.xml配置如下内容:

    <fieldType name="text_ik" class="solr.TextField">

        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    </fieldType>

     

    schema.xml中的配置如下:

     

    再次到浏览器访问:http://localhost:8983/solr,发现不报错了

    接着同步mongodb的数据:

    mongo-connector -m localhost:27017 --auto-commit-interval=1 -t http://localhost:8983/solr/docdetection -d solr_doc_manager

     

    最后的分词效果是:

     

     

     

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)