solr6.6配置IK中文分词、IK扩展词、同义词、pinyin4j拼音分词

版权声明:【分享也是一种提高】个人转载请在正文开头明显位置注明出处,未经作者同意禁止企业/组织转载,禁止私自更改原文,禁止用于商业目的。 https://blog.csdn.net/u010887744/article/details/77535695
solr基本指令:
jetty部署【推荐】:Linux: $ bin/solr start;Windows: bin\solr.cmd start
创建core: Linux: $ bin/solr create -c corehotel;Windows: bin\solr.cmd create -c corehotel
停止所有:bin/solr stop -all;
重启solr【指定端口】:bin/solr start 【 -p 8983】;
查看帮助:bin/solr -help ;
状态:bin/solr status

1、部署solr6.6(本教程基于solr自带的jetty启动),tomcat部署配置教程相似【由于solr解压即用,部署简单,此处省略详细部署教程】。

2、下载支持solr6.6的ikanalyzer-6.6.0.jar,源码地址:https://github.com/zxiaofan/ik-analyzer-solr6,可直接在target目录(或release)下载已打包好的ikanalyzer-6.6.0.jar。
Note:
ikanalyzer原作者已停止更新,上述代码根据网友描述修改了相关文件使之兼容sole6.6。

3、下载拼音插件:pinyin4j-2.5.0.jar、pinyinAnalyzer4.3.1.jar,相关jar下载见文末。

4、将下载的3个插件copy到\server\solr-webapp\webapp\WEB-INF\lib目录。

5、修改managed-schema(server\solr\[coreName]\conf目录),在</schema>节点前新增如下配置:
text_ik:IK分词,配置同义词过滤器;
text_pinyin:支持IK分词,索引index支持拼音过滤器。
<fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
        <analyzer type="index">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
        <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.wltea.analyzer.lucene.IKTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
    </fieldType>
 
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" >
  <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
  <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
<analyzer type="query" useSmart="true" >
   <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
   <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
</analyzer>
</fieldType>

6、重启solr,访问http://localhost:8983/solr/#/【corehotel】/analysis
Analyse Fieldname / FieldType选择text_ik,
6.1、中文分词:

6.2、IK扩展词
“嗨咯”这个词语我不想拆分怎么办呢,只需在server\solr-webapp\webapp\WEB-INF\classes目录配置扩展词即可。配置文件包含:IKAnalyzer.cfg.xml、以及ext.dic,相关文件可直接在附件下载。
在ext.dic内容中新增一行数据“嗨咯”,然后重启solr,再次查询“嗨喽朋友今天天气真好”,就会发现“嗨喽”并未被分词了。

6.3、同义词
如果我想查询“朋友”的时候也能搜索到“zxiaofan”怎么操作呢,只需在server\solr\【coreName】\conf\synonyms.txt文件中新增一行数据(朋友,zxiaofan)即可。重启solr,再次查询“嗨喽朋友今天天气真好”,你就会发现分词器结果中包含了“zxiaofan”这个词语了。

6.4、pinyin4j拼音分词
Analyse Fieldname / FieldType选择text_pinyin,你会发现分词结果中包含了拼音,并且前面配置的扩展词、同义词依然有效(因为text_pinyin依旧使用了IK分词器)。

相关配置文件或jar均可在github下载,https://github.com/zxiaofan/ik-analyzer-solr6/releases/tag/6.6.0

欢迎个人转载,但须在文章页面明显位置给出原文连接;
未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。

【 CSDN 】:csdn.zxiaofan.com
【GitHub】:github.zxiaofan.com

如有任何问题,欢迎留言。祝君好运!
Life is all about choices! 
将来的你一定会感激现在拼命的自己!

没有更多推荐了,返回首页