IK分词器的使用

首先我们通过Postman发送GET请求查询分词效果

GET http://localhost:9200/_analyze
{"text":"农业银行"
}

得到如下结果,可以发现es的默认分词器无法识别中文中农业银行这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求。

Copy
{"tokens": [{"token": "农","start_offset": 0,"end_offset": 1,"type": "<IDEOGRAPHIC>","position": 0},{"token": "业","start_offset": 1,"end_offset": 2,"type": "<IDEOGRAPHIC>","position": 1},{"token": "银","start_offset": 2,"end_offset": 3,"type": "<IDEOGRAPHIC>","position": 2},{"token": "行","start_offset": 3,"end_offset": 4,"type": "<IDEOGRAPHIC>","position": 3}]
}

首先我们访问 https://github.com/medcl/elasticsearch-analysis-ik/releases 下载与es对应版本的中文分词器。将解压后的后的文件夹放入es根目录下的plugins目录下,重启es即可使用。

我们这次加入新的参数"analyzer":"ik_max_word"

  • k_max_word:会将文本做最细粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌」,会穷尽各种可能的组合
  • ik_smart:会将文本做最粗粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、国歌」
GET http://localhost:9200/_analyze
{"analyzer":"ik_max_word","text":"农业银行"
}

得到如下结果

{"tokens": [{"token": "农业银行","start_offset": 0,"end_offset": 4,"type": "CN_WORD","position": 0},{"token": "农业","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 1},{"token": "银行","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 2}]
}

百度搜索中每天都会收录新的词汇,es中也可以进行扩展词汇。

我们首先查询弗雷尔卓德字段

GET http://localhost:9200/_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": 2,"type": "CN_CHAR","position": 1},{"token": "尔","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 2},{"token": "卓","start_offset": 3,"end_offset": 4,"type": "CN_CHAR","position": 3},{"token": "德","start_offset": 4,"end_offset": 5,"type": "CN_CHAR","position": 4}]
}

首先进入es根目录中的plugins文件夹下的ik文件夹,进入config目录,创建custom.dic文件,写入弗雷尔卓德。同时打开IKAnalyzer.cfg文件,将新建的custom.dic配置其中,重启es。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">custom.doc</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

再次查询发现es的分词器可以识别到弗雷尔卓德词汇

{"tokens": [{"token": "弗雷尔卓德","start_offset": 0,"end_offset": 5,"type": "CN_WORD","position": 0},{"token": "弗雷尔","start_offset": 0,"end_offset": 3,"type": "CN_WORD","position": 1},{"token": "卓","start_offset": 3,"end_offset": 4,"type": "CN_CHAR","position": 2},{"token": "德","start_offset": 4,"end_offset": 5,"type": "CN_CHAR","position": 3}]
}

我们也可以配置远程扩展字典

我们启动一个nginx服务器,创建分词文件 es/fenci.txt

弗雷尔卓德
德玛西亚
祖安

配置访问路径

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">custom.doc</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">http://xxx.xxx.xxx.xx/es/fenci.txt</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

本文转载自:

作者: 海向

出处:https://www.cnblogs.com/haixiang/p/11810799.html

ElasticSearch中文分词器-IK分词器的使用相关推荐

  1. 本地elasticsearch中文分词器 ik分词器安装及使用

    ElasticSearch 内置了分词器,如标准分词器.简单分词器.空白词器等.但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词. ik分词器就是一个标准的中文分词器.它可以根据 ...

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

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

  3. 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 ...

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

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

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

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

  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. elasticsearch安装和使用ik分词器

    在使用elasticsearch的时候,如果不额外安装分词器的话,在处理text字段时会使用elasticsearch自带的默认分词器,我们来一起看看默认分词器的效果: 环境信息 本次实战用到的ela ...

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

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

最新文章

  1. MATLAB_no.2:关于眼睛的_cutab=[cutab;a b];_cutab(:,2)-cutab(:,1):
  2. html5 作业调度,Net作业调度(五)—quartz.net动态添加job设计
  3. python弹幕代码_只需3 行代码就可以获取B站(弹幕、评论、用户)数据
  4. paradox 修改字段长度_400字的作文就只能写400字?刘强东:这不是笑话
  5. Javascript let和const
  6. js 将多个对象合并成一个对象 assign方法
  7. python模块下载1002python模块下载_【Python】Python的urllib模、urllib2模块的网络下载文件...
  8. 最新VSCode格式化代码不换行
  9. HTML5基础学习-表格标签
  10. 数据库系统——基本概念
  11. 噪音分贝测试软件在线,分贝测试(在线分贝测试仪)
  12. 计算机软件技术实习——迷宫算法核心
  13. 高效沟通的方法与技巧(转自飞马网)
  14. 能拿驾照就能通过 Elastic 认证考试!
  15. 07-HTML通用属性
  16. mac安装linux时触控板不能用,macbookpro上装Deepin 20.2后wifi和触摸板不可用的解决
  17. 美国计算机专业四年毕业率达多少,卡内基梅隆大学毕业率知多少
  18. 解释源代码文件、目标代码文件和可执行文件之间的区别
  19. 7.3_minibatch-sgd
  20. 解决ORA-01111, ORA-01110, ORA-01157

热门文章

  1. 近世代数--整环的商域--整环D扩充为域Q
  2. Goroutine池
  3. 关于Class.forName()
  4. 密码学基础知识(三)古典密码
  5. 根据表中的时间戳字段统计每天数据的数量
  6. MySQL FLOAT、DOUBLE、DECIMAL(小数类型)
  7. 【Web】HTTPS 引入http资源,混合内容
  8. 18、INSERT:插入数据(添加数据)
  9. Django实现对数据库数据增删改查(一)
  10. jQuery的选择器分类