和我一起打造个简单搜索之IK分词以及拼音分词
elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字。所以我们引入 es 插件 es-ik。同时为了提升用户体验,引入 es-pinyin 插件。本文介绍这两个 es 插件的安装。
环境
本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳定,可以用于生产环境。
ik 分词器 和 pinyin 分词器在 github 仓库可以找到,注意版本与 elasticsearch 的版本需要对应,本文使用 5.5.3 版本
如果 elasticsearch 与我的版本不同,可以去官方 github 对应的仓库查看对应版本的 ik 以及 pinyin 分词器。
系列文章
- 一、和我一起打造个简单搜索之ElasticSearch集群搭建
- 二、和我一起打造个简单搜索之ElasticSearch入门
- 三、和我一起打造个简单搜索之IK分词以及拼音分词
- 四、和我一起打造个简单搜索之Logstash实时同步建立索引
- 五、和我一起打造个简单搜索之SpringDataElasticSearch入门
- 六、和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
- ...
安装 ik 分词器
前文中,我们已经安装了 elasticsearch,我们在其基础上安装分词器
cd /usr/local/es/
## 下载 ik 分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.3/elasticsearch-analysis-ik-5.5.3.zip
## 使用 unzip 解压
## 如果未安装,通过 yum instal unzip 进行安装
unzip elasticsearch-analysis-ik-5.5.3.zip
## 在 elasticsearch 安装目录下的 plugins 文件夹下创建 ik 目录
mkdir /usr/local/es/master/plugins/ik
## 将解压后的 ik 目录下的所有文件移动到 /usr/local/es/master/plugins/ik/
mv /usr/local/es/elasticsearch/* /usr/local/es/master/plugins/ik/
## 重启 elasticsearch 或启动 master elasticsearch
## 注意启动时,需要切换到 esuser 用户
## 启动成功后,日志里会打印此行
[2018-09-02T06:33:43,703][INFO ][o.e.p.PluginsService ] [master] loaded plugin [analysis-ik]
验证 ik 分词器是否生效
打开 Restlet Client 或者 postman 工具
GET http://192.168.199.192:9200/_analyze?analyzer=ik_smart&text="中华人民共和国国歌"
移除名为 ik 的analyzer和tokenizer,请分别使用 ik_smart 和 ik_max_word
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
这里 analyzer 可以指定分词类型,发送请求返回结果:
{
"tokens": [
{
"token": "中华人民共和国",
"start_offset": 1,
"end_offset": 8,
"type": "CN_WORD",
"position": 0
},
{
"token": "国歌",
"start_offset": 8,
"end_offset": 10,
"type": "CN_WORD",
"position": 1
}
]
}
我这里指定的 analyzer 为 ik_smart,即粗粒度分词,可以看到 ik 分词器已经生效了。接下来继续安装 pinyin 分词器。
安装 pinyin 分词器
cd /usr/local/es/
## 下载 pinyin 分词器
wget https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v5.5.3/elasticsearch-analysis-pinyin-5.5.3.zip
## 使用 unzip 解压
## 如果未安装,通过 yum instal unzip 进行安装
unzip elasticsearch-analysis-pinyin-5.5.3.zip
## 在 elasticsearch 安装目录下的 plugins 文件夹下创建 pinyin 目录
mkdir /usr/local/es/master/plugins/pinyin
## 将解压后的 ik 目录下的所有文件移动到 /usr/local/es/master/plugins/pinyin/
mv /usr/local/es/elasticsearch/* /usr/local/es/master/plugins/pinyin/
## 重启 elasticsearch 或启动 master elasticsearch
## 注意启动时,需要切换到 esuser 用户
## 启动成功后,日志里打印
[2018-09-02T07:04:56,203][INFO ][o.e.p.PluginsService ] [master] loaded plugin [analysis-ik]
[2018-09-02T07:04:56,203][INFO ][o.e.p.PluginsService ] [master] loaded plugin [analysis-pinyin]
验证 pinyin 分词器是否生效
打开 Restlet Client 或者 postman 工具
GET http://192.168.199.192:9200/_analyze?analyzer=pinyin&text="李小龙"
这里 analyzer 可以指定分词为 pinyin,发送请求返回结果:
{
"tokens": [
{
"token": "li",
"start_offset": 1,
"end_offset": 2,
"type": "word",
"position": 0
},
{
"token": "xiao",
"start_offset": 2,
"end_offset": 3,
"type": "word",
"position": 1
},
{
"token": "long",
"start_offset": 3,
"end_offset": 4,
"type": "word",
"position": 2
},
{
"token": "lxl",
"start_offset": 0,
"end_offset": 3,
"type": "word",
"position": 2
}
]
}
观察结果,说明 pinyin 分词器也已经生效了。
集群其他节点分词器安装
现在只对 master 进行了安装,其他 slave 也需要安装,这里可以通过拷贝的方式直接来完成安装了。
cp -r master/plugins/ slave1/
cp -r master/plugins/ slave2/
如果其他节点在不同服务器上,通过 scp 命令拷贝即可。
有疑问?
欢迎来信,给我写信
参考
和我一起打造个简单搜索之IK分词以及拼音分词的更多相关文章
- 和我一起打造个简单搜索之SpringDataElasticSearch入门
网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
- 和我一起打造个简单搜索之Logstash实时同步建立索引
用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...
- 和我一起打造个简单搜索之ElasticSearch集群搭建
我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对 ...
- 和我一起打造个简单搜索之ElasticSearch入门
本文简单介绍了使用 Rest 接口,对 es 进行操作,更深入的学习,可以参考文末部分. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳 ...
- Elasticsearch拼音分词和IK分词的安装及使用
一.Es插件配置及下载 1.IK分词器的下载安装 关于IK分词器的介绍不再多少,一言以蔽之,IK分词是目前使用非常广泛分词效果比较好的中文分词器.做ES开发的,中文分词十有八九使用的都是IK分词器. ...
- 【杂记】docker搭建ELK 集群6.4.0版本 + elasticsearch-head IK分词器与拼音分词器整合
大佬博客地址:https://blog.csdn.net/supermao1013/article/category/8269552 docker elasticsearch 集群启动命令 docke ...
- es简单打造站内搜索
最近挺忙的,在外出差,又同时干两个项目.白天一个晚上一个,特别是白天做的项目,马上就要上线了,在客户这里 三天两头开会,问题很多真的很想好好静下来怼代码,半夜做梦都能fix bugs~ 和客户交流真的 ...
- 我的搜索优化记录(一):中文分词优化IK Analyzer
搜索绝对不仅仅是搭起框架,跑出结果就完成的工作,之后分词.排序等等的优化才是重头戏. 先交代下背景:这个搜索是我一个人负责搭建并优化的项目,主要索引对象为歌曲.歌手MV等等. 使用技术:Lucene. ...
随机推荐
- python历史与基本类型
前言 我自学的方式主要是看文档,看视频,第一次做写博客这么神圣的事情,内心是忐忑的,写的东西比较杂,路过的小伙伴不要嘲笑我,主要是记录一日所学,顺便锻炼一下语言组织能力吧,anyway,这些都不重要, ...
- 如何查询linux下BIOS信息
一般可以使用dmidecode命令(还有biosdecode命令可参考),背景知识如下: SMBIOS (System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需 ...
- centos 网卡自动连接
/etc/sysconfig/network-scripts/目录下ifcfg-eth0这个文件,把ONBOOT="no"改为yes,
- ORA-12514: TNS:监听程序当前无法识别连接描述符中请
若Oracle出现“监听程序当前无法识别连接描述符中请求的服务”这个错误可以按照以下方法解决: 可以通过这个路径找到一个文本文件: oracle\product\10.2.0\db_1\NETWORK ...
- 06-jQuery的文档操作
之前js中咱们学习了js的DOM操作,也就是所谓的增删改查DOM操作.通过js的DOM的操作,大家也能发现,大量的繁琐代码实现我们想要的效果.那么jQuery的文档操作的API提供了便利的方法供我们操 ...
- AI for VS ,美团创新之处分析
微软在2017中发布了VS Tools for AI,旨在提升用户对于深度学习的需求体验.AI组件可以让我们迅速构建和训练深度学习的Project,其功能主要有开发,调试和部署深度学习和人工智能的解决 ...
- Hadoop 系列文章(三) 配置部署启动YARN及在YARN上运行MapReduce程序
这篇文章里我们将用配置 YARN,在 YARN 上运行 MapReduce. 1.修改 yarn-env.sh 环境变量里的 JAVA_HOME 路径 [bamboo@hadoop-senior ha ...
- 使用Python对Twitter进行数据挖掘(Mining Twitter Data with Python)
目录 1.Collecting data 1.1 Register Your App 1.2 Accessing the Data 1.3 Streaming 2.Text Pre-processin ...
- phpMyAdmin 4.7.x CSRF 漏洞利用
作者:Ambulong phpMyAdmin是个知名MySQL/MariaDB在线管理工具,phpMyAdmin团队在4.7.7版本中修复了一个危害严重的CSRF漏洞(PMASA-2017-9),攻击 ...
- Go语言运算符
目录 算术运算符 注意事项 赋值运算符 逻辑运算符 短路与和短路或 关系运算符 位运算符 其他运算符 运算符优先级 运算符用于在程序运行时执行数学或逻辑运算. Go 语言内置的运算符有:算术运算符.赋 ...