之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了。

1. ik分词器的下载和安装,测试

第一: 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases ,这里你需要根据你的Es的版本来下载对应版本的IK,这里我使用的是6.3.2的ES,所以就下载ik-6.3.2.zip的文件。

第二: 解压-->将文件复制到 es的安装目录/plugin/ik下面即可,完成之后效果如下:

到这里已经完成了,不需要去elasticSearch的 elasticsearch.yml 文件去配置。

第三:重启ElasticSearch

第四:测试效果

未使用ik分词器的时候测试分词效果:

  1. POST book/_analyze
  2. {
  3. "text": "我是中国人"
  4. }
  5. //结果是:
  6. {
  7. "tokens": [
  8. {
  9. "token": "我",
  10. "start_offset": 0,
  11. "end_offset": 1,
  12. "type": "<IDEOGRAPHIC>",
  13. "position": 0
  14. },
  15. {
  16. "token": "是",
  17. "start_offset": 1,
  18. "end_offset": 2,
  19. "type": "<IDEOGRAPHIC>",
  20. "position": 1
  21. },
  22. {
  23. "token": "中",
  24. "start_offset": 2,
  25. "end_offset": 3,
  26. "type": "<IDEOGRAPHIC>",
  27. "position": 2
  28. },
  29. {
  30. "token": "国",
  31. "start_offset": 3,
  32. "end_offset": 4,
  33. "type": "<IDEOGRAPHIC>",
  34. "position": 3
  35. },
  36. {
  37. "token": "人",
  38. "start_offset": 4,
  39. "end_offset": 5,
  40. "type": "<IDEOGRAPHIC>",
  41. "position": 4
  42. }
  43. ]
  44. }

使用IK分词器之后,结果如下:

  1. POST book_v6/_analyze
  2. {
  3. "analyzer": "ik_max_word",
  4. "text": "我是中国人"
  5. }
  6. //结果如下:
  7. {
  8. "tokens": [
  9. {
  10. "token": "我",
  11. "start_offset": 0,
  12. "end_offset": 1,
  13. "type": "CN_CHAR",
  14. "position": 0
  15. },
  16. {
  17. "token": "是",
  18. "start_offset": 1,
  19. "end_offset": 2,
  20. "type": "CN_CHAR",
  21. "position": 1
  22. },
  23. {
  24. "token": "中国人",
  25. "start_offset": 2,
  26. "end_offset": 5,
  27. "type": "CN_WORD",
  28. "position": 2
  29. },
  30. {
  31. "token": "中国",
  32. "start_offset": 2,
  33. "end_offset": 4,
  34. "type": "CN_WORD",
  35. "position": 3
  36. },
  37. {
  38. "token": "国人",
  39. "start_offset": 3,
  40. "end_offset": 5,
  41. "type": "CN_WORD",
  42. "position": 4
  43. }
  44. ]
  45. }

对于上面两个分词效果的解释:

1. 如果未安装ik分词器,那么,你如果写 "analyzer": "ik_max_word",那么程序就会报错,因为你没有安装ik分词器

2. 如果你安装了ik分词器之后,你不指定分词器,不加上  "analyzer": "ik_max_word" 这句话,那么其分词效果跟你没有安装ik分词器是一致的,也是分词成每个汉字。

2. 创建指定分词器的索引

索引创建之后就可以使用ik进行分词了,当你使用ES搜索的时候也会使用ik对搜索语句进行分词,进行匹配。

  1. PUT book_v5
  2. {
  3. "settings":{
  4. "number_of_shards": "6",
  5. "number_of_replicas": "1",
  6. //指定分词器
  7. "analysis":{
  8. "analyzer":{
  9. "ik":{
  10. "tokenizer":"ik_max_word"
  11. }
  12. }
  13. }
  14. },
  15. "mappings":{
  16. "novel":{
  17. "properties":{
  18. "author":{
  19. "type":"text"
  20. },
  21. "wordCount":{
  22. "type":"integer"
  23. },
  24. "publishDate":{
  25. "type":"date",
  26. "format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd"
  27. },
  28. "briefIntroduction":{
  29. "type":"text"
  30. },
  31. "bookName":{
  32. "type":"text"
  33. }
  34. }
  35. }
  36. }
  37. }

关于ik分词器的分词类型(可以根据需求进行选择):

ik_max_word:会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;

ik_smart:会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。如下:

  1. POST book_v6/_analyze
  2. {
  3. "analyzer": "ik_smart",
  4. "text": "我是中国人"
  5. }
  6. //结果
  7. {
  8. "tokens": [
  9. {
  10. "token": "我",
  11. "start_offset": 0,
  12. "end_offset": 1,
  13. "type": "CN_CHAR",
  14. "position": 0
  15. },
  16. {
  17. "token": "是",
  18. "start_offset": 1,
  19. "end_offset": 2,
  20. "type": "CN_CHAR",
  21. "position": 1
  22. },
  23. {
  24. "token": "中国人",
  25. "start_offset": 2,
  26. "end_offset": 5,
  27. "type": "CN_WORD",
  28. "position": 2
  29. }
  30. ]
  31. }

IK分词器的安装与使用IK分词器创建索引的更多相关文章

  1. ElasticSearch(六):IK分词器的安装与使用IK分词器创建索引

    之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了. 1. i ...

  2. docker上安装elasticsearch和ik分词器插件和header,实现分词功能

    docker run -di --name=tensquare_es -p 9200: -p 9300:9300 elasticsearch:5.6.8 创建elasticsearch容器(如果版本不 ...

  3. 搜索引擎ElasticSearch系列(五): ElasticSearch2.4.4 IK中文分词器插件安装

    一:IK分词器简介  IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本.最初,它是以开源 ...

  4. docker 安装ElasticSearch的中文分词器IK

    首先确保ElasticSearch镜像已经启动 安装插件 方式一:在线安装 进入容器 docker exec -it elasticsearch /bin/bash 在线下载并安装 ./bin/ela ...

  5. es的插件 ik分词器的安装和使用

    今天折腾了一天,在es 5.5.0 上安装ik.一直通过官方给定的命令没用安装成功,决定通过手工是形式进行安装.https://github.com/medcl/elasticsearch-analy ...

  6. Linux安装ElasticSearch-2.2.0-分词器插件(IK)

    1.在gitpub上搜索elasticsearch-analysis,能够看到所有elasticsearch的分词器: 2.安装IK分词器:https://github.com/medcl/elast ...

  7. Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录

    最近工作需要,开始研究ES,当前ES的最新版本为5.0.1,从之前的2.x的版本号一下升级到5.x,主要是之前Elastic的产品版本号因为收购等原因很乱,ES 2.X版本的和Kibana 4.x版本 ...

  8. solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  9. elasticsearch分词插件的安装

    IK简介 IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本.最初,它是以开源项目Luen ...

随机推荐

  1. java代码调用exe(cmd命令)

    public class ShellCommand{    public static void execCmd(String cmd, boolean wait)    {        execC ...

  2. 【leetcode】960. Delete Columns to Make Sorted III

    题目如下: We are given an array A of N lowercase letter strings, all of the same length. Now, we may cho ...

  3. MFC:OnCreate PreCreateWindow PreSubclassWindow

    OnCreate PreCreateWindow PreSubclassWindow PreCreateWindow和PreSubclassWindow是虚函数,而OnCreate是一个消息响应函数. ...

  4. 什么是DOM(文档对象模型)?

    ㈠什么是DOM? 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口. DOM 定义了访问 HTML 和 XML 文档的标准: ...

  5. jquery pageY属性 语法

    jquery pageY属性 语法 作用:pageY() 属性是鼠标指针的位置,相对于文档的上边缘.直线模组 语法:event.page 参数: 参数 描述 event     必需.规定要使用的事件 ...

  6. css 内容居中

    css: parent{display:table;} child{display:table-cell;vertical-align:middle;}

  7. ASE高级软件工程 第一周博客作业

    1.自我介绍 我叫姚顺,是来自哈尔滨工业大学计算机学院的一名大四本科生,专业方向计算机科学,目前在KC组实习.平时的业余时间主要用来打篮球,听音乐,跑步,当然还有游戏(划掉).之前的大学三年主要用来做 ...

  8. luoguP1041 传染病控制 x

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...

  9. Jmeter(三) 从上传图片来入门Jmeter

    用Jmeter上传用户头像到人人网 先用抓包工具Fiddler把上传操作的报文抓取下来 开启Jmeter,在测试计划中创建一个线程组,取名为“图片上传” 再在线程组中创建一个HTTP请求 在请求报文中 ...

  10. 关于多个py文件生成一个可运行exe文件(用pyinstaller)

    首先下载Pyinstaller,在cmd命令下执行:pip installer Pyinstaller,不需要关心安装在哪 然后把所有相关的py文件都放在一个目录下 在那个目录下执行cmd命令:pyi ...