您的位置:首页 > 其它

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

2017-04-05 08:51 477 查看
之前在Solr6.5在Centos6上的安装与配置(一)一文中介绍了solr6.5的安装。这篇文章主要介绍创建Solr的Core并配置中文IKAnalyzer分词和拼音检索。

一、创建Core:

1、首先在solrhome(solrhome的路径和配置见Solr6.5在Centos6上的安装与配置(一)中solr的web.xml)中创建mycore目录;

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

[root@localhostmycore]#


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

[root@localhostmycore]#cp-R/down/solr-6.5.0/example/example-DIH/solr/solr/*./
[root@localhostmycore]#ls
confcore.properties
[root@localhostmycore]#


3、重新启动tomcat;

[root@localhostdown]#/down/apache-tomcat-8.5.12/bin/shutdown.sh
[root@localhostdown]#/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@localhostdown]#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@localhostconf]#cd/down/apache-tomcat-8.5.12/solrhome/mycore/conf
[root@localhostconf]#vimanaged-schema


在文件的</schema>前添加

<fieldTypename="text_smartcn"class="solr.TextField"positionIncrementGap="0">
<analyzertype="index">
<tokenizerclass="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzertype="query">
<tokenizerclass="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>


重启tomcat,后在浏览器输入http://localhost:8080/solr/index.html#/mycore/analysis


在FieldValue(Index)文本框输入一些中文,然后AnalyseFieldname/FieldType:选择text_smartcn查看中文分词的效果。

如图:



三、配置IKAnalyzer的中文分词:

1、首先下载IKAnalyzer这是最新的支持solr6.5.

解压后会有四个文件。

[root@localhostikanalyzer-solr5]#ls
ext.dicIKAnalyzer.cfg.xmlsolr-analyzer-ik-5.1.0.jarik-analyzer-solr5-5.x.jarstopword.dic


ext.dic为扩展字典,stopword.dic为停止词字典,IKAnalyzer.cfg.xml为配置文件,solr-analyzer-ik-5.1.0.jarik-analyzer-solr5-5.x.jar为分词jar包。

2、将文件夹下的IKAnalyzer.cfg.xml,ext.dic和stopword.dic三个文件复制到/webapps/solr/WEB-INF/classes目录下,并修改IKAnalyzer.cfg.xml


[root@localhostikanalyzer-solr5]#cpext.dicIKAnalyzer.cfg.xmlstopword.dic/down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/


<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IKAnalyzer扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entrykey="ext_dict">ext.dic;</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->
<entrykey="ext_stopwords">stopword.dic;</entry>

</properties>


3、在ext.dic里增加自己的扩展词典,例如,唯品会聚美优品

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

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


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

<!--我添加的IK分词-->
<fieldTypename="text_ik"class="solr.TextField">
<analyzertype="index">
<tokenizerclass="org.apache.lucene.analysis.ik.IKTokenizerFactory"useSmart="true"/>
</analyzer>
<analyzertype="query">
<tokenizerclass="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@localhostdown]#cppinyin4j-2.5.0.jarpinyinAnalyzer4.3.1.jar/down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/


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

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


重启tomcat查看拼音检索效果。



这里用的是solr自带的中文分词加上pinyin4j来实现的。

相关文件的下载地址:

ikanalyzer-solr5.zip

pinyin.zip

所有要用到的文件:solr6.5ik-pinyin.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: