IK中文分词器的安装

ES默认是没有IK中文分词器的,我们要将IK中文分词器作为一个插件安装到ES中,安装的步骤也很简单:

  • 从GitHub上下载适合自己ES版本的IK中文分词器,地址如下:https://github.com/medcl/elasticsearch-analysis-ik/releases。
  • 在我们的ES的插件目录中(${ES_HOME}/plugins)创建ik目录, 将我们下载好的IK分词器解压到ik目录。
  • 重启我们所有的ES服务。 到这里,我们的IK中文分词器就安装完了。

IK中文分词器插件给我们提供了两个分析器

  • ik_max_word : 会将文本做最细粒度的拆分
  • ik_smart:会做最粗粒度的拆分

我们指定分词器为ik_max_word ,文本内容为中华人民共和国国歌:

POST _analyze
{"analyzer": "ik_max_word","text":     "中华人民共和国国歌"
}

分词的结果:

{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "中华人民","start_offset": 0,"end_offset": 4,"type": "CN_WORD","position": 1},{"token": "中华","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 2},{"token": "华人","start_offset": 1,"end_offset": 3,"type": "CN_WORD","position": 3},{"token": "人民共和国","start_offset": 2,"end_offset": 7,"type": "CN_WORD","position": 4},{"token": "人民","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 5},{"token": "共和国","start_offset": 4,"end_offset": 7,"type": "CN_WORD","position": 6},{"token": "共和","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 7},{"token": "国","start_offset": 6,"end_offset": 7,"type": "CN_CHAR","position": 8},{"token": "国歌","start_offset": 7,"end_offset": 9,"type": "CN_WORD","position": 9}]
}

我们可以看到,分词分的非常细,我们在使用上面的这些进行搜索时,都可以搜索到中华人民共和国国歌这个文本。

我们再看一下另外一个分析器: ik_smart

POST _analyze
{"analyzer": "ik_smart","text":     "中华人民共和国国歌"
}

我们的文本内容同样是中华人民共和国国歌,看一下分词的效果:

{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "国歌","start_offset": 7,"end_offset": 9,"type": "CN_WORD","position": 1}]
}

同样的文本,使用ik_smart进行分词时,只分成了两个词,和ik_max_word分词器比少了很多。这就是两个分词器的区别,不过这两个分析器都是可以对中文进行分词的。

创建索引时指定IK分词器

  • 既然我们安装了IK中文分词器的插件,那么我们在创建索引时就可以为text类型的字段指定IK中文分词器了。来看看下面的例子,
PUT ik_index
{"mappings": {"properties": {"id": {"type": "long"},"title": {"type": "text","analyzer": "ik_max_word"}}}
}
  • 我们创建了索引ik_index,并且为字段title指定了分词器ik_max_word。我们执行一下,创建成功。然后我们再通过GET请求看一下这个索引的映射情况。
GET ik_index/_mapping
  • 返回的结果如下:
{"ik_index": {"mappings": {"properties": {"id": {"type": "long"},"title": {"type": "text","analyzer": "ik_max_word"}}}}
}
  • 我们可以看到title字段的分析器是ik_max_word。

为索引指定默认IK分词器

  • 在上一节中,我们已经给大家介绍了为索引指定默认分词器的方法,这里我们直接把分词器改为IK分词器就可以了,如下:
PUT ik_index
{"settings": {"analysis": {"analyzer": {"default": {"type": "ik_max_word"}}}}
}
  • 这样我们在索引中就不用创建每一个字段,可以通过动态字段映射,将String类型的字段映射为text类型,同时分词器指定为ik_max_word。我们试一下,向ik_index索引中添加一条记录。
POST ik_index/_doc/1
{"id": 1,"title": "大兴庞各庄的西瓜","desc": "大兴庞各庄的西瓜真是好吃,脆沙瓤,甜掉牙"
}
  • 执行成功。我们再执行搜索试一下,如下:
POST ik_index/_search
{"query": { "match": { "title": "西瓜" } }
}
  • 我们搜索title字段匹配西瓜,执行结果如下:
{"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 0.2876821,"hits": [{"_index": "ik_index","_type": "_doc","_id": "1","_score": 0.2876821,"_source": {"id": 1,"title": "大兴庞各庄的西瓜","desc": "大兴庞各庄的西瓜真是好吃,脆沙瓤,甜掉牙"}}]}
}
  • 我们可以看到刚才插入的那条记录已经搜索出来了,看来我们的IK中文分词器起作用了,而且搜索的结果也符合我们的预期。我们再看看搜索西一个字的时候,能不能搜索到结果,
POST ik_index/_search
{"query": { "match": { "title": "西" } }
}
  • 执行结果如下:
{"took": 4,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 0,"relation": "eq"},"max_score": null,"hits": []}
}
  • 并没有搜索出结果,说明在进行分词时,西瓜是作为一个词出现的,并没有拆分成每一个字,这也是符合我们预期的。

    好了~ IK中文分词器就给大家介绍到这里了~~

ES7 IK中文分词器相关推荐

  1. Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用

    text和keyword区别 term和match区别 ik中文分词器使用 一.前言 二.之前相关的博客 三.造点测试数据 1. 创建一个index 2. 插入测试数据 四.做一份试卷 第1题:tit ...

  2. python连接es_Elasticsearch --- 3. ik中文分词器, python操作es

    一.IK中文分词器 1.下载安装 2.测试 #显示结果 {"tokens": [ {"token" : "上海","start_o ...

  3. Solr7.2.1环境搭建和配置ik中文分词器

    solr7.2.1环境搭建和配置ik中文分词器 安装环境:Jdk 1.8. windows 10 安装包准备: solr 各种版本集合下载:http://archive.apache.org/dist ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器

    注: elasticsearch 版本6.2.2 1)集群模式,则每个节点都需要安装ik分词,安装插件完毕后需要重启服务,创建mapping前如果有机器未安装分词,则可能该索引可能为RED,需要删除后 ...

  5. 分词器以及ik中文分词器

    文章目录 分词器以及ik中文分词器 概念 ik分词器的安装 环境准备 设置jdk环境变量 下载maven安装包并解压 设置path 验证maven是否安装成功 下载IK分词器并安装 使用IK分词器 查 ...

  6. 学习 ES 的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用Dev Tools

    文章目录 感悟 新接触的单词 知识点一:ES是什么? 知识点二:ES基本概念 知识点三:1.1 什么是全文检索和Lucene? 知识点四:1.2 什么是倒排索引,Lucene实现全文检索的流程是怎样? ...

  7. 使用Docker快速安装部署ES和Kibana并配置IK中文分词器以及自定义分词拓展词库

    使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境 如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker 有了Docker环境后, ...

  8. Elasticsearch:IK 中文分词器

    Elasticsearch 内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语,比如: POST /_analyze {"text": "我爱北京天安门&quo ...

  9. 玩转ES,一文教你掌握IK中文分词器

    前言 ES默认的分词器对中文分词并不友好,所以我们一般会安装中文分词插件,以便能更好的支持中文分词检索. 而ES的中文分词器中,最流行的必然是IK分词器. 一.IK分词器介绍 IK分词器在是一款基于词 ...

最新文章

  1. 玩转ECS第5讲 | 弹性计算安全组最佳实践及新特性介绍
  2. 《循序渐进学Spark》一1.6 使用Spark Shell开发运行Spark程序
  3. 【渝粤题库】陕西师范大学209006教育政策与法规作业(高起专、高起本)
  4. mall-applet小程序项目是一套电商系统
  5. 当AI遇上云计算,北京 · DevRun 华为云开发者大会
  6. “啁啾”看完这篇再不懂,放弃吧……
  7. 生成 oracle 连接串,Generator连接Oracle数据库生成Model报错
  8. CSS——NO.9(颜色值和长度值)
  9. java提高代码质量的小技巧,10个 Javascript 小技巧帮你提升代码质量
  10. 暂无支持此机型的手机版本_miui+app官方版-miui+安卓版 _5577安卓网
  11. 计算日期跨度时如何过滤工作日_学会这3个函数,解决所有关于计算工作日的难题...
  12. matlab常用代码及操作
  13. amap不同样式marker点_amap不同样式marker点_CAD制图软件中如何设置CAD打印样式表(CTB)?...
  14. 【rac asm扩容】在vmware workstation中配置集群(rac)的共享存储(磁盘)方法(流程)
  15. Veritas NetBackup8.1.1设置备份
  16. SDN(Software Defined Network) 软件定义网络学习
  17. 火狐浏览器不能访问ftp服务器的文件夹,火狐浏览器计划后续版本禁用网页引用FTP子资源...
  18. 绿色版premiere cs4无法导出(输出)解决方法
  19. D0、T0、S0到账模式的区别
  20. 静雅思听,在听的世界里沉醉

热门文章

  1. 宽带IPTV单线复用
  2. mybatis-plus(五)-----中文文档
  3. 一步一步学RenderMonkey
  4. android pppd流程,一种基于PPPD实现PPP‑Server功能的通信模块及其实现方法与流程...
  5. 批量ping检测主机状态
  6. 短距离的无线连接技术--蓝牙
  7. 2022上海省赛(A,E,G,H,M,N)
  8. 【转载】Windows 10 运行 Linux子系统的图形界面程序
  9. Kotlin-Android世界的一股清流-函数
  10. 【互动媒体】”十二个一“的文艺创作的文本分析与可视化