Solr6.5配置中文分詞IKAnalyzer和拼音分詞pinyinAnalyzer (二)
之前在 Solr6.5在Centos6上的安裝與配置 (一) 一文中介紹了solr6.5的安裝。這篇文章主要介紹建立Solr的Core並配置中文IKAnalyzer分詞和拼音檢索。
一、建立Core:
1、首先在solrhome(solrhome的路徑和配置見Solr6.5在Centos6上的安裝與配置 (一)中solr的web.xml)中建立mycore目錄;
[[email protected] down]# [[email protected] down]# mkdir /down/apache-tomcat-8.5.12/solrhome/mycore [[email protected]down]# cd /down/apache-tomcat-8.5.12/solrhome/mycore
[[email protected] mycore]#
2、複製solr-6.5.0\example\example-DIH\solr\solr下的所有檔案到/down/apache-tomcat-8.5.12/solrhome/mycore目錄下:
[[email protected] mycore]# cp -R /down/solr-6.5.0/example/example-DIH/solr/solr/* ./ [[email protected] mycore]# ls conf core.properties [root@localhost mycore]#
3、重新啟動tomcat;
[[email protected] down]# /down/apache-tomcat-8.5.12/bin/shutdown.sh [[email protected] down]# /down/apache-tomcat-8.5.12/bin/startup.sh
二、配置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/目錄下。
[[email protected] 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檔案.
[[email protected] conf]# cd /down/apache-tomcat-8.5.12/solrhome/mycore/conf [[email protected] 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>
在Field Value (Index)文字框輸入一些中文,然後Analyse Fieldname / FieldType:選擇text_smartcn檢視中文分詞的效果。
如圖:
三、配置IKAnalyzer的中文分詞:
1、首先下載這是最新的支援solr6.5.
解壓後會有四個檔案。
[[email protected] 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
[[email protected] 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/目錄下。
[[email protected] 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/目錄下。
[[email protected] 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來實現的。
相關檔案的下載地址: