Solr默认不支持中文分词,我们可以配置Solr自带的中文分词或者IK分词
ikAnalyzer分词
1、先下载solr对应版本的ik分词器,下载地址:
https://search.maven.org/search?q=com.github.magese
分词器GitHub源码地址:https://github.com/magese/ik-analyzer-solr7
2.将下载好的jar包放入solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib目录中
3.将resources目录下的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下;(如果无classes新建一个)
IKAnalyzer.cfg.xml、 ext.dic、 stopword.dic、 ik.conf、 dynamicdic.txt
注意修改文件stopword.dic,ext.dic的编码方式为无BOM的UTF-8编码方式
至此IK扩充词典配置完成,需要注意几点:
1)词典文件必须是UTF-8无BOM格式的,否则配置了,词典也不会生效。
2)项目编码是UTF-8,在Properties中设置。
3)IKAnalyzer.cfg.xml和词典路径问题。词典路径可以随意放,但是IkAnalyzer.cfg.xml必须放在src根目录下。补充一句配置词典路径的时候,路径中com前不要加“/”,否则找不到词典。
4)若中途修改了词典,需要重新刷新下项目,修改的词典才能生效。
4.server/solr/coreXX/conf目录中打开managed-schema文件,增加如下代码
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
分词演示
效果:如 对“我是架构师速成记”分词
4)IKAnalyzer.cfg.xml 是配置扩展词库的配置文件,可以看一下里面的代码如下:
<?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>
可以写多个扩展词库,只要用 ; 分隔即可
ext.dic添加扩展词 成记 是架
未添加扩展词之前:
添加扩展词之后:
solr自带分词中文分词器
因为自带的分词效果以及扩展性不是很好,我们这就暂时不采用这种了
1、复制jar包
cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.4.0.jar server/solr-webapp/webapp/WEB-INF/lib
2.配置
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<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>
End
希望大家初步掌握中文分词,有问题可及时反馈