Elasticsearch拼音分词和IK分词的安装及使用
一、Es插件配置及下载
1.IK分词器的下载安装
关于IK分词器的介绍不再多少,一言以蔽之,IK分词是目前使用非常广泛分词效果比较好的中文分词器。做ES开发的,中文分词十有八九使用的都是IK分词器。
下载地址:https://github.com/medcl/elasticsearch-analysis-ik
2.pinyin分词器的下载安装
可以在淘宝、京东的搜索框中输入pinyin就能查找到自己想要的结果,这就是拼音分词,拼音分词则是将中文分析成拼音格式,可以通过拼音分词分析出来的数据进行查找想要的结果。
下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin
注:插件下载一定要和自己版本对应的Es版本一致,并且安装完插件后需重启Es,才能生效。
插件安装位置:(本人安装了三个插件,暂时先不介绍murmur3插件,可以暂时忽略)
插件配置成功,重启Es
二、拼音分词器和IK分词器的使用
1.IK中文分词器的使用
1.1 ik_smart: 会做最粗粒度的拆分
- GET /_analyze
- {
- "text":"中华人民共和国国徽",
- "analyzer":"ik_smart"
- }
- 结果:
- {
- "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
- }
- ]
- }
1.2 ik_max_word: 会将文本做最细粒度的拆分
- GET /_analyze
- {
- "text": "中华人民共和国国徽",
- "analyzer": "ik_max_word"
- }
- 结果:
- {
- "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
- }
- ]
- }
2.拼音分词器的使用
- GET /_analyze
- {
- "text":"刘德华",
- "analyzer": "pinyin"
- }
- 结果:
- {
- "tokens": [
- {
- "token": "liu",
- "start_offset": 0,
- "end_offset": 1,
- "type": "word",
- "position": 0
- },
- {
- "token": "ldh",
- "start_offset": 0,
- "end_offset": 3,
- "type": "word",
- "position": 0
- },
- {
- "token": "de",
- "start_offset": 1,
- "end_offset": 2,
- "type": "word",
- "position": 1
- },
- {
- "token": "hua",
- "start_offset": 2,
- "end_offset": 3,
- "type": "word",
- "position": 2
- }
- ]
- }
注:不管是拼音分词器还是IK分词器,当深入搜索一条数据是时,必须是通过分词器分析的数据,才能被搜索到,否则搜索不到
三、IK分词和拼音分词的组合使用
当我们创建索引时可以自定义分词器,通过指定映射去匹配自定义分词器
- PUT /my_index
- {
- "settings": {
- "analysis": {
- "analyzer": {
- "ik_smart_pinyin": {
- "type": "custom",
- "tokenizer": "ik_smart",
- "filter": ["my_pinyin", "word_delimiter"]
- },
- "ik_max_word_pinyin": {
- "type": "custom",
- "tokenizer": "ik_max_word",
- "filter": ["my_pinyin", "word_delimiter"]
- }
- },
- "filter": {
- "my_pinyin": {
- "type" : "pinyin",
- "keep_separate_first_letter" : true,
- "keep_full_pinyin" : true,
- "keep_original" : true,
- "limit_first_letter_length" : 16,
- "lowercase" : true,
- "remove_duplicated_term" : true
- }
- }
- }
- }
- }
当我们建type时,需要在字段的analyzer属性填写自己的映射
- PUT /my_index/my_type/_mapping
- {
- "my_type":{
- "properties": {
- "id":{
- "type": "integer"
- },
- "name":{
- "type": "text",
- "analyzer": "ik_smart_pinyin"
- }
- }
- }
- }
测试,让我们先添加几条数据
- POST /my_index/my_type/_bulk
- { "index": { "_id":1}}
- { "name": "张三"}
- { "index": { "_id": 2}}
- { "name": "张四"}
- { "index": { "_id": 3}}
- { "name": "李四"}
IK分词查询
- GET /my_index/my_type/_search
- {
- "query": {
- "match": {
- "name": "李"
- }
- }
- }
- 结果:
- {
- "took": 3,
- "timed_out": false,
- "_shards": {
- "total": 5,
- "successful": 5,
- "skipped": 0,
- "failed": 0
- },
- "hits": {
- "total": 1,
- "max_score": 0.47160998,
- "hits": [
- {
- "_index": "my_index",
- "_type": "my_type",
- "_id": "3",
- "_score": 0.47160998,
- "_source": {
- "name": "李四"
- }
- }
- ]
- }
- }
拼音分词查询:
- GET /my_index/my_type/_search
- {
- "query": {
- "match": {
- "name": "zhang"
- }
- }
- }
- 结果:
- {
- "took": 1,
- "timed_out": false,
- "_shards": {
- "total": 5,
- "successful": 5,
- "skipped": 0,
- "failed": 0
- },
- "hits": {
- "total": 2,
- "max_score": 0.3758317,
- "hits": [
- {
- "_index": "my_index",
- "_type": "my_type",
- "_id": "2",
- "_score": 0.3758317,
- "_source": {
- "name": "张四"
- }
- },
- {
- "_index": "my_index",
- "_type": "my_type",
- "_id": "1",
- "_score": 0.3758317,
- "_source": {
- "name": "张三"
- }
- }
- ]
- }
- }
注:搜索时,先查看被搜索的词被分析成什么样的数据,如果你搜索该词输入没有被分析出的参数时,是查不到的!!!!
Elasticsearch拼音分词和IK分词的安装及使用的更多相关文章
- 使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用
原文:使用Docker 安装Elasticsearch.Elasticsearch-head.IK分词器 和使用 Elasticsearch的安装 一.elasticsearch的安装 1.镜像拉取 ...
- ElasticSearch已经配置好ik分词和mmseg分词(转)
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引 ...
- Elasticsearch集群使用ik分词器
IK分词插件的安装 ES集群环境 VMWare下三台虚拟机Ubuntu 14.04.2 LTS JDK 1.8.0_66 Elasticsearch 2.3.1 elasticsearch-jdbc- ...
- ElasticSearch中文分词器-IK分词器的使用
IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze { "text":"农业银行 ...
- ElasticSearch(六):IK分词器的安装与使用IK分词器创建索引
之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了. 1. i ...
- Windows10安装Elasticsearch IK分词插件
安装插件 cmd切换到Elasticsearch安装目录下 C:\Users\Administrator>D: D:\>cd D:\Program Files\Elastic\Elasti ...
- Docker 下Elasticsearch 的安装 和ik分词器
(1)docker镜像下载 docker pull elasticsearch:5.6.8 (2)安装es容器 docker run -di --name=changgou_elasticsearch ...
- Elasticsearch拼音和ik分词器的结合应用
一.创建索引时,自定义拼音分词和ik分词 PUT /my_index { "index": { "analysis": { "analyzer&quo ...
- ElasticSearch 中文分词插件ik 的使用
下载 IK 的版本要与 Elasticsearch 的版本一致,因此下载 7.1.0 版本. 安装 1.中文分词插件下载地址:https://github.com/medcl/elasticsearc ...
随机推荐
- 【详解】Tomcat是如何监控并删除超时Session的?
前言 偶然发现Tomcat会话时间的半小时,并不是说会话创建后,只有半小时的有效使用时间,而是说会话空闲半小时后,会被删除.索性就翻了一下源码.做了一番整理. 注:空闲时间,指的是同一个会话两次请求之 ...
- IDEA的几个常用配置,日常开发必备。
用了IDEA有很长时间了,身边的同事朋友也都慢慢的开始都从Eclipse切换到IDEA了,其实无论是Eclipse还是IntelliJ IDEA都是开发工具而已,各自都有优点.但是刚从Eclipse切 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer
Advanced Installer :Free for 30 days. All features. 下载地址:https://www.advancedinstaller.com/download. ...
- NGUI 做局部2d卷轴
网上找到的都是做整个背景的卷轴动画,通常是改变纹理位置或者背景图片的x坐标 没有提到在UI界面里某个部分做卷轴动画,找了很久,才发现NGUI的Panel里的Clipping属性可以裁剪Panel的大小 ...
- [PHP]算法-队列结构的PHP实现
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 1.php数组完全就能实现 2.array_push 从尾部往里压入元素 3.array_shi ...
- springMVC_07乱码及restful风格
乱码的解决 通过过滤器解决乱码问题:CharacterEncodingFilter 配置web.xml文件 <filter> <filter-name>encoding< ...
- 【转】Mybatis源码解读-设计模式总结
原文:http://www.crazyant.net/2022.html?jqbmtw=b90da1&gsjulo=kpzaa1 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开 ...
- Root(hdu5777+扩展欧几里得+原根)2015 Multi-University Training Contest 7
Root Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
- Aquarium Tank(csu1634+几何+二分)Contest2087 - 湖南多校对抗赛(2015.05.24)-G
Aquarium Tank Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 15 Solved: 4[Submit][Status][Web Board ...
- JavaScript是如何工作的:Service Worker的生命周期及使用场景
摘要: 理解Service Worker. 原文:JavaScript 是如何工作的:Service Worker 的生命周期及使用场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...