本文内容:
最简单的配置solr+ik分词器,在不重启solr服务的情况下,动态加载扩展词字典表到内存中,以达到热更新扩展词字典的作用。
零、测试环境
测试系统:win7
solr版本:7.4.0
ik版本:7.4.0
ik分词器maven仓库地址:
<dependency>
<groupId>com.github.magese</groupId>
<artifactId>ik-analyzer</artifactId>
<version>7.4.0</version>
</dependency>
Maven中央仓库jar包下载地址:IK Analyzer Solr7
一、solr环境搭建,配置IK中文分词器。
如何配置solr及ik分词器请参考我上一篇博客:solr7.3 环境搭建 配置中文分词器 ik-analyzer-solr7 详细步骤
二、准备配置文件
将之前下载好的jar包里的5个配置文件全部copy到solr服务的jetty或tomcat的webapp/WEB-INF/classes/目录下;
如果WEB-INF目录下没有classes目录,手动创建一个即可;
三、配置文件说明
IKAnalyzer.cfg.xml
ext.dic
stopword.dic
以上三个配置文件是IK分词器默认自带的;
IKAnalyzer.cfg.xml是配置扩展词字典表以及停用词字典表名称,ext.dic与stopword.dic分别就是扩展词和停用词字典表文件;
ik.conf
dynamicdic.txt
这两个配置文件是动态加载扩展词字典表的关键!!!
ik.conf文件说明:
files=dynamicdic.txt
lastupdate=0
files为动态字典列表,可以设置多个字典表,用逗号进行分隔,默认动态字典表为dynamicdic.txt;
lastupdate默认值为0,每次对动态字典表修改后请+1,不然不会将字典表中新的词语添加到内存中,lastupdate采用的是int类型,不支持时间戳,如果使用时间戳的朋友可以把源码中的int改成long即可;
dynamicdic.txt 为动态字典,在此文件配置的词语不需重启服务即可加载进内存中;
四、测试效果
到这配置已经完成了,接下来启动solr来测试一下效果;
启动solr到分析页面选择IK分词器,来测试一下未配置扩展词时"黑夜给了我黑色的眼睛"被分成了"黑夜", "给了我", "黑色", "眼睛"四个词;
接下来我们打开动态扩展词字典dynamicdic.txt,将"黑夜给了我黑色的眼睛"文件中保存;
这个时候扩展词还是没有生效的,不要忘了把ik.conf配置文件中的lastupdate+1;
大功告成,修改lastupdate值保存后刷新分析页面,就可以看到扩展词已经生效了!