栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch集成IK分词器

ElasticSearch集成IK分词器

1、 解决ElasticSearch集成IK分词器报ES_JAVA_HOME不匹配问题:

原因:ES7运行时会报错,提示ES_JAVA_HOME不匹配之类的,这是Elasticsearch在7之后的版本内置了JDK,而内置的JDK是当前推荐的JDK版本。当然如果你本地配置了JAVA_HOME那么ES就是优先使用配置的JDK启动ES,我们日常的代码开发都是使用的JDK1.8,所以这里不会把JAVA_HOME配置成JDK11,我们只需更改Elasticsearch的启动文件,使它指向我们下载的JDK11。首先在我们elasticsearch-env最末尾添加如下代码。

#配置自己的jdk11
export JAVA_HOME=D:elasticsearch-7.15.2-windows-x86_64elasticsearch-7.15.2jdk
export PATH=$JAVA_HOMEbin:$PATH


#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="D:elasticsearch-7.15.2-windows-x86_64elasticsearch-7.15.2jdkbinjava"
else
        JAVA=`which java`
fi

启动成功如下:
访问成功:

2. 为什么使用IK分词器:
自带ES默认标准分词器
ES默认自带的分析器,是标准分词器,针对英文好使,但是针对中文,只能把汉字一个个拆分,不符合中文插叙需求。

我们测试下标准分词器,看看标准分词器如何处理 “今天天气真好” 这个字符串:由此图片可以看出ES自带默认分词器针对中文分词并不理想,所以我们需要IK分词器,换而言之针对中文我们需要使用到IK分词器。

3. IK分词器

IKAnalyzer是一个开源的,基于java开发的轻量级的中文分词工具包。ES默认没有携带IK分词器,需要下载,下载地址(PS:根据ES版本下载压缩包,并解压缩到ES的plugins文件夹下,请下载第一个ZIP):
https://github.com/medcl/elasticsearch-analysis-ik/releases

下载安装:
1.下载IK压缩包,本文使用ES是7.15.2,下载的IK也是7.15.2;
2.解压放到es安装目录中的plugin目录中,解压缩完毕后可以把压缩包删除或移除。
3.重启es即可

测试效果

IK分词器,支持两种算法。分别为:

ik_smart :最少切分

ik_max_word :最细粒度切分

下面看效果,还是测试 “今天天气真好” 这个字符串。

1.ik_smart

2.ik_max_word


结果对比,ik_max_word与ik_smart分词对比,ik_max_word分的更为详细、更多一些

自定义词库

我们分词“今天天气真好”这个字符串,结果如下

我们想要将“今天天气真好”为一个完整的词,但是结果并没有,这个时候需要我们去词库添加这个词

1.在es的插件目录中,我们添加了IK分词器,在分词器目录下,有个config目录,

pluginselasticsearch-analysis-ik-7.15.2config

在congif中,添加一个mydic.dic的文件,名字随意,后缀为dic;

2.在mydic.dic文件中添加词汇:

3.保存后,修改在elasticsearch-analysis-ik-7.15.2/config目录的IKAnalyzer.cfg.xml文,内容:
4.重启es;如果是es集群,每个节点都需要改;

测试下:

ik_smart:


ik_max_word:

现在分词都有“今天天气真好”这个词了,这里就介绍IK分词器到这里,如有其他问题欢迎讨论,如有问题还望指正,验证后,必会修改。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号