Solr6.5配置中文分詞IKAnalyzer和拼音分詞pinyinAnalyzer (二)


 之前在 Solr6.5在Centos6上的安裝與配置 (一) 一文中介紹了solr6.5的安裝。這篇文章主要介紹創建Solr的Core並配置中文IKAnalyzer分詞和拼音檢索。

一、創建Core:

1、首先在solrhome(solrhome的路徑和配置見Solr6.5在Centos6上的安裝與配置 (一)中solr的web.xml)中創建mycore目錄;

[root@localhost down]# 
[root@localhost down]# mkdir /down/apache-tomcat-8.5.12/solrhome/mycore
[root@localhost down]# cd /down/apache-tomcat-8.5.12/solrhome/mycore
[root@localhost mycore]# 

2、復制solr-6.5.0\example\example-DIH\solr\solr下的所有文件到/down/apache-tomcat-8.5.12/solrhome/mycore目錄下:

[root@localhost mycore]# cp -R /down/solr-6.5.0/example/example-DIH/solr/solr/* ./
[root@localhost mycore]# ls
conf  core.properties
[root@localhost mycore]# 

3、重新啟動tomcat;

[root@localhost down]# /down/apache-tomcat-8.5.12/bin/shutdown.sh
[root@localhost down]# /down/apache-tomcat-8.5.12/bin/startup.sh

4、此時在瀏覽器輸入http://localhost:8080/solr/index.html即可出現Solr的管理界面,即可看到我們剛才的mycore

二、配置solr自帶的中文分詞(和IK的區別是不能自己添加詞庫):

 1、配置solr6.5自帶中文分詞。復制solr-6.5.0/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.5.0.jar到apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/目錄下。

[root@localhost down]# cp /down/solr-6.5.0/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.5.0.jar /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/

2、為core添加對中文分詞的支持。編輯mycore下conf下的managed-schema文件.

[root@localhost conf]# cd /down/apache-tomcat-8.5.12/solrhome/mycore/conf
[root@localhost conf]# vi managed-schema 

在文件的</schema>前添加

<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
    <analyzer type="index">
      <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
       <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
</fieldType>

重啟tomcat,后在瀏覽器輸入http://localhost:8080/solr/index.html#/mycore/analysis

在Field Value (Index)文本框輸入一些中文,然后Analyse Fieldname / FieldType:選擇text_smartcn查看中文分詞的效果。

如圖:

 

三、配置IKAnalyzer的中文分詞:

1、首先下載IKAnalyzer 這是最新的支持solr6.5.

解壓后會有四個文件。

[root@localhost ikanalyzer-solr5]# ls
ext.dic  IKAnalyzer.cfg.xml  solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar  stopword.dic 
ext.dic為擴展字典,stopword.dic為停止詞字典,IKAnalyzer.cfg.xml為配置文件,solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar為分詞jar包。

2、將文件夾下的IKAnalyzer.cfg.xml , ext.dic和stopword.dic 三個文件 復制到/webapps/solr/WEB-INF/classes 目錄下,並修改IKAnalyzer.cfg.xml
[root@localhost ikanalyzer-solr5]# cp ext.dic IKAnalyzer.cfg.xml stopword.dic /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 擴展配置</comment>
        <!--用戶可以在這里配置自己的擴展字典 -->
        <entry key="ext_dict">ext.dic;</entry>

        <!--用戶可以在這里配置自己的擴展停止詞字典-->
        <entry key="ext_stopwords">stopword.dic;</entry>

</properties>

3、在ext.dic 里增加自己的擴展詞典,例如,唯品會 聚美優品

4、復制solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar到/down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/目錄下。

[root@localhost down]# cp /down/ikanalyzer-solr5/solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/

5、在 solrhome\mycore\conf\managed-schema 文件</schema>前增加如下配置

<!-- 我添加的IK分詞 -->
<fieldType name="text_ik" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
        </analyzer>
</fieldType>

 

注意:  記得將stopword.dic,ext.dic的編碼方式為UTF-8 無BOM的編碼方式。 

重啟tomcat查看分詞效果。

 

 

四、配置拼音檢索:

1、前期准備,需要用到pinyin4j-2.5.0.jar、pinyinAnalyzer.jar這兩個jar包,下載地址

2、將pinyin4j-2.5.0.jar、pinyinAnalyzer.jar這兩個jar包復制到/down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/目錄下。

[root@localhost down]# cp pinyin4j-2.5.0.jar pinyinAnalyzer4.3.1.jar /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/

3、在 solrhome\mycore\conf\managed-schema 文件</schema>前增加如下配置:

<fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
    <analyzer type="index">
        <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
        <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
        <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
        <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
        <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
    </analyzer>
</fieldType>

 

重啟tomcat查看拼音檢索效果。

這里用的是solr自帶的中文分詞加上pinyin4j來實現的。

 

相關文件的下載地址:

ikanalyzer-solr5.zip

pinyin.zip

 

所有要用到的文件:solr6.5ik-pinyin.zip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM