ElasticSearch 内置了分词器,如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词。

ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词,并且支持用户配置自己的字典,所以它除了可以按通用的习惯分词外,我们还可以定制化分词。

ik分词器是一个插件包,我们可以用插件的方式将它接入到ES。

一、安装

1.1 下载

下载地址:ik分词器地址
注意要选择跟自己es保持一致的版本下载。

1.2解压

将下载的安装包在es安装目录下的plugins下新建一个ik文件夹、将文件解压。

1.3启动

启动成功之后可以看见ik插件已经运行

也可以通过当前命令查看插件是否安装。

插箱即用,到此ik分词器的安装就完成了。

二、使用IK分词器

IK分词器有两种分词模式:ik_max_word和ik_smart模式。

1、ik_max_word

会将文本做最细粒度的拆分,比如会将"曾舒琪董事长早上好"拆分为"曾、舒琪、董事长、董事、长、早上好、早上、上好"

GET /_analyze
{"analyzer": "ik_max_word", // 最细粒度划分"text": "曾舒琪董事长早上好"
}

执行结果如下:

{"tokens" : [{"token" : "曾","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "舒琪","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "董事长","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 2},{"token" : "董事","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 3},{"token" : "长","start_offset" : 5,"end_offset" : 6,"type" : "CN_CHAR","position" : 4},{"token" : "早上好","start_offset" : 6,"end_offset" : 9,"type" : "CN_WORD","position" : 5},{"token" : "早上","start_offset" : 6,"end_offset" : 8,"type" : "CN_WORD","position" : 6},{"token" : "上好","start_offset" : 7,"end_offset" : 9,"type" : "CN_WORD","position" : 7}]
}

2、ik_smart

会做最粗粒度的拆分,比如会将"曾舒琪董事长早上好"拆分成"曾、舒琪、董事长、早上好"

GET /_analyze
{"analyzer": "ik_smart",  // 最粗粒度划分"text": "曾舒琪董事长早上好"
}

执行结果如下:

{"tokens" : [{"token" : "曾","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "舒琪","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "董事长","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 2},{"token" : "早上好","start_offset" : 6,"end_offset" : 9,"type" : "CN_WORD","position" : 3}]
}

这就是ik分词器两种简单的使用模式

问题

我们使用这两种模式,想让ik分词器把名词进行一个拆开划分,但是有一个问题,曾舒琪这明显就是一个人名,两种模式都并没有把这个词汇拆开到一起

解决方法

其实ik分词器给我们提供了一系列的词典,我们只需要添加一个自己的词典。

1、找到config目录下的xml配置文件

2、这里我们需要添加我们自己的词典。其实所谓词典就是创建一个名称后缀以dict结尾的文件。

3、这里我添加了一个shipley_zeng.dict的词典

4、那这个词典哪里来的呢?凭空出现吗?我们返回上一级目录。可以看见有很多词典、我们随便打开一个看看。

看看这个main.dict

可以看见这边有特别多的词汇、这些词汇在实际的应用开发过程当中肯定是不够用的、我们要创建一个属于我们自己的词典。

5、创建一个自己的词典到config目录下,名字跟上面提到的一样叫做shipley_zeng.dict

内容如下,这边我们要注意一下编码格式为UTF-8

6、加入这个词典后我们在重新启动es,可以看见已经成功的加载了我们创建的词典

7、我们在使用 ik_max_word 最细粒度查询看看效果

GET /_analyze
{"analyzer": "ik_max_word", // 最细粒度划分"text": "曾舒琪董事长早上好"
}

执行结果如下:

{"tokens" : [{"token" : "曾舒琪","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0},{"token" : "舒琪","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "董事长","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 2},{"token" : "董事","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 3},{"token" : "长","start_offset" : 5,"end_offset" : 6,"type" : "CN_CHAR","position" : 4},{"token" : "早上好","start_offset" : 6,"end_offset" : 9,"type" : "CN_WORD","position" : 5},{"token" : "早上","start_offset" : 6,"end_offset" : 8,"type" : "CN_WORD","position" : 6},{"token" : "上好","start_offset" : 7,"end_offset" : 9,"type" : "CN_WORD","position" : 7}]
}

8、使用 ik_smart 最粗粒度查询看看效果

GET /_analyze
{"analyzer": "ik_smart",  // 最粗粒度划分"text": "曾舒琪董事长早上好"
}

执行结果如下:

{"tokens" : [{"token" : "曾舒琪","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0},{"token" : "董事长","start_offset" : 3,"end_offset" : 6,"type" : "CN_WORD","position" : 1},{"token" : "早上好","start_offset" : 6,"end_offset" : 9,"type" : "CN_WORD","position" : 2}]
}

9、我们可以看见、现在不管使用ik_max_word还是ik_smart,他都能将曾舒琪这个词汇拆开组合,达到了我们所需要的诉求。

总结

以上就是本地elasticsearch中文分词器 ik分词器及使用,希望对刚刚接触es的小伙伴有所帮助,谢谢,如有疑问请随时联系我。

本地elasticsearch中文分词器 ik分词器安装及使用相关推荐

  1. 使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用

    使用Docker 安装Elasticsearch.Elasticsearch-head.IK分词器 和使用 原文:使用Docker 安装Elasticsearch.Elasticsearch-head ...

  2. ElasticSearch 6.0.0 IK分词 Kibana 6.0.0

    ElasticSearch 6.0.0 & IK分词 & Kibana 6.0.0 1. 安装ES 6.0.0 docker run -itd -p 9200:9200 -p 9300 ...

  3. ElasticSearch中文分词器-IK分词器的使用

    IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze {"text":"农业银行& ...

  4. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  5. Elasticsearch生产实战(ik分词器、拼音分词、自动补全、自动纠错)

    目录 一.IK分词器 1.IK分词器介绍 2.安装 3.使用 4.自定义词库 二.拼音分词器 1.拼音分词器介绍 2.安装 三.自动补全 1.效果演示 2.实战 四.自动纠错 1.场景描述 2.DSL ...

  6. 白话Elasticsearch29-IK中文分词之IK分词器配置文件+自定义词库

    文章目录 概述 ik配置文件 IK自定义词库 自定义词库 Step1 : 新建自定义分词库 Step2 : 添加到ik的配置文件中 Step3 :重启es ,查看分词 自定义停用词库 Step1 : ...

  7. 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器

    1.拉取镜像 docker pull elasticsearch:7.5.0 2.配置 mkdir -p /mydata/elasticsearch/config # 用来存放配置文件 mkdir - ...

  8. 分词器——ik——分词算法

    IK Analyzer 3.0特性 采用了特有的"正向迭代最细粒度切分算法",具有80万字/秒的高速处理能力 采用了多子处理器分析模式,支持:英文字母(IP地址.Email.URL ...

  9. ElasticSearch集群配置IK分词

    1.环境介绍 操作系统:centos 7.9 elasticsearch版本:7.13.3 IK分词版本:elasticsearch-analysis-ik-7.13.3 IK分词下载地址: http ...

最新文章

  1. IntelliJ IDEA 2016.3.1 学习git 码云插件 学习笔记
  2. 使用Lucene分词
  3. 第十六届全国大学生智能车竞赛全国总决赛获奖排行榜
  4. 全云端万能小程序_万能门店全云端独立版微信小程序源码V4.0.10,全五端源码下载...
  5. linux下php的安装路径,Linux下Apache、PHP、MySQL默认安装路径
  6. 【转】Android Studio简单设置
  7. 一篇总结的很好的Spring data jpa 文章,里面包含多种查询方式,可以结合api使用
  8. [html] 你有用过图片热区吗?它有什么运用场景?
  9. 快速迁移Next.js应用到函数计算
  10. HBae找不到协处理器导致RegionServer全部挂掉
  11. linux如何安装django
  12. oracle group by 取最新的一条_大国智能制造全文免费阅读_大国智能制造最新章节_乌溪小道的小说...
  13. unity 3D入门
  14. UI设计中标签栏图标设计规范
  15. 关于:将日文键盘设置为英文键盘
  16. 【Cinema 4D】物体路径跟随动画
  17. 代做linux作业,Linux系统管理第七周作业【Linux微职位】(示例代码)
  18. 云分众享,阿里云盘资源搜索工具
  19. Android EditText 只能输入数字
  20. 戴尔数据避风港 帮助电力系统免受勒索病毒攻击

热门文章

  1. 腾讯云cloudlite认证_国内首批可信物联网云平台认证公布,腾讯云上榜
  2. 从一个被更新后的GTF文件得到geneID和gene类型的对应关系
  3. 计算机学硕305分能调剂到哪,考研必看|最全的历年国家线分析+调剂攻略都在这!...
  4. ActionContext类
  5. 浅谈便携式激励(PSS)和UVM
  6. guacamole集成到自己的项目中
  7. 降血压的药有哪些?使用注意事项有哪些
  8. 在APP开发整个过程中,有哪些错误是容易出现的呢?
  9. 线性回归的原假设和p值
  10. 高数三重积分+离散二元关系+线代矩阵解线性方程