博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch-analysis-ik分词器的安装及使用
阅读量:5743 次
发布时间:2019-06-18

本文共 3453 字,大约阅读时间需要 11 分钟。

Elasticsearch-analysis-ik分词器的安装及使用

前面我们讲到了以及一些简单的操作语法。今天我们介绍一下怎么使用Elasticsearch-analysis-ik分词器实现一个简单的中文分词。

Elasticsearch 内置的分词器对中文不友好,会把中文分成单个字来进行全文检索,不能达到想要的结果,在全文检索及新词发展如此快的互联网时代,IK可以进行友好的分词及自定义分词。

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版,目前支持最新版本的ES6.X版本。

ik 带有两个分词器

ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语
ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有

安装Elasticsearch-analysis-ik

Centos环境下:

$ cd /usr/share/elasticsearch-6.5.0/plugins
$ wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v6.5.0.tar.gz
$ tar -xvzf v6.5.0.tar.gz复制代码

安装成功后重启ES

$ ps -ef | grep elasticsearch
$ kill -9 [进程号]
$ su es $ cd /usr/share/elasticsearch/bin$ ./elasticsearch -d复制代码
简单测试
curl -H 'Content-Type:application/json' 'http://localhost:9200/index/_analyze?pretty=true' -d'{ "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    },    {      "token" : "万岁",      "start_offset" : 9,      "end_offset" : 11,      "type" : "CN_WORD",      "position" : 2    },    {      "token" : "万万岁",      "start_offset" : 11,      "end_offset" : 14,      "type" : "CN_WORD",      "position" : 3    }  ]}复制代码

可以看出。我们实现了简单的中文分词

但是我们想要一些特定的分词功能呢?比如说自己定义的一些名词,不想让分词器拆分怎么办呢?比如说这里的筱筱,我就不想让他拆分开怎么办呢?

curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_smart","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" : 5,      "type" : "CN_WORD",      "position" : 3    },    {      "token" : "号",      "start_offset" : 5,      "end_offset" : 6,      "type" : "CN_CHAR",      "position" : 4    }  ]}复制代码

遇到这种情况,我们可以使用analysis-ik 支持自定义词库;增加自定义词库。

analysis-ik自定义词库

进入ES安装目录下的config/analysis-ik目录。

$ cd /usr/share/elasticsearch/config/analysis-ik复制代码

新建自定义词库文件

$ vi my.dic
筱筱:wq复制代码

修改IKAnalyzer.cfg.xml配置文件

$ vim IKAnalyzer.cfg.xml复制代码

文件内容如下,将新建的my.dic文件放入ext_dict下。

IK Analyzer 扩展配置
my.dic
复制代码

重启ES

在进行验证刚刚的例子

curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_smart","text":"筱筱的公众号"}'复制代码

结果如下:

{  "tokens" : [    {      "token" : "筱筱",      "start_offset" : 0,      "end_offset" : 2,      "type" : "CN_WORD",      "position" : 0    },    {      "token" : "的",      "start_offset" : 2,      "end_offset" : 3,      "type" : "CN_CHAR",      "position" : 1    },    {      "token" : "公众",      "start_offset" : 3,      "end_offset" : 5,      "type" : "CN_WORD",      "position" : 2    },    {      "token" : "号",      "start_offset" : 5,      "end_offset" : 6,      "type" : "CN_CHAR",      "position" : 3    }  ]}复制代码

从结果中可以看出,就不会把我自定义的词汇给拆分开了。简单的分词用法就写到这里。

如果有什么好的建议或者意见请关注公众号

转载于:https://juejin.im/post/5c1494a0e51d455fe8104542

你可能感兴趣的文章
主流汽车制造商施压美政府,强烈要求放宽自动驾驶限制
查看>>
第4天:JS入门-给div设置宽高背景色
查看>>
window.btoa 和 window.atob
查看>>
前端性能优化:客户端从输入到展示讲解
查看>>
Android PDF开发:android-pdfview
查看>>
php如何调用以太坊JSON-RPC接口创建钱包?
查看>>
360插件化RePlugin踩坑
查看>>
CentOS7.X安装Redis-4.0.8以及Redis集群搭建
查看>>
一个C#操作RabbitMQ的完整例子
查看>>
ICO接盘者不再,新币九成破发,底层投资者血本无归
查看>>
深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍...
查看>>
Ubuntu 16.04下搭建基于携程Apollo(阿波罗)配置中心单机模式
查看>>
常用的API接口,返回JSON格式的服务API接口
查看>>
一直被世人误解的薛定谔猫:批判量子力学及其残忍的隐喻
查看>>
iOS - 解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named
查看>>
数据结构思维 第四章 `LinkedList`
查看>>
《碟中谍5》背后的生物识别技术大比拼
查看>>
Linux通用KVM自动安装Shell脚本(兼容所有Linux发行版/CentOS/Ubuntu)
查看>>
Docker EE 2.0 版本助力 Kubernetes ,让部署不再复杂!
查看>>
十七年价值传承与技术领先,新华三入门级存储历久弥新
查看>>