[西柚仔]ElasticSearch的IK分词器详细安装教程及使用实操

阅读: 评论:0

[西柚仔]ElasticSearch的IK分词器详细安装教程及使用实操

[西柚仔]ElasticSearch的IK分词器详细安装教程及使用实操

1. IK分词器

NOTE: 默认ES中采用标准分词器进行分词,这种方式并不适用于中文网站,因此需要修改ES对中文友好分词,从而达到更佳的搜索的效果。

1.1 在线安装IK

在线安装IK (v5.5.1版本后开始支持在线安装 )

# 0.必须将es服务中原始数据删除
- 进入es安装目录中将data目录数据删除rm -rf data# 1. 在es安装目录中执行如下命令[es@linux elasticsearch-6.2.4]$ ./bin/elasticsearch-plugin install .8.0/elasticsearch-analysis-ik-6.8.0.zip
-> Downloading .2.4/elasticsearch-analysis-ik-6.2.4.zip
[=================================================] 100%
-> Installed analysis-ik
[es@linux elasticsearch-6.2.4]$ ls plugins/
analysis-ik
[es@linux elasticsearch-6.2.4]$ cd plugins/analysis-ik/
[es@linux analysis-ik]$ ls
commons-codec-1.9.jar    elasticsearch-analysis-ik-6.2.4.jar  httpcore-4.4.4.jar
commons-logging-1.2.jar  httpclient-4.5.2.jar                 plugin-descriptor.properties# 2. 重启es生效# 3.测试ik安装成功
GET /_analyze
{"text": "中华人民共和国国歌","analyzer": "ik_smart"
}# 4.在线安装IK配置文件 
- es安装目录中config目录analysis-ik/l

NOTE: 要求版本严格与当前使用版本一致,如需使用其他版本替换 6.2.4 为使用的版本号

1.2 本地安装IK

可以将对应的IK分词器下载到本地,然后再安装 NOTE: 本课程使用本地安装

# 1. 下载对应版本
- [es@linux ~]$ wget .2.4/elasticsearch-analysis-ik-6.2.4.zip# 2. 解压
- [es@linux ~]$ unzip elasticsearch-analysis-ik-6.2.4.zip #先使用yum install -y unzip# 3. 移动到es安装目录的plugins目录中
- [es@linux ~]$ ls elasticsearch-6.2.4/plugins/[es@linux ~]$ mv elasticsearch elasticsearch-6.2.4/plugins/[es@linux ~]$ ls elasticsearch-6.2.4/plugins/elasticsearch[es@linux ~]$ ls elasticsearch-6.2.4/plugins/elasticsearch/commons-codec-1.9.jar    config                               httpclient-4.5.2.jar  		plugin-descriptor.propertiescommons-logging-1.2.jar  elasticsearch-analysis-ik-6.2.4.jar  httpcore-4.4.4.jar# 4. 重启es生效# 5. 本地安装ik配置目录为  
- es安装目录中/plugins/analysis-ik/config/l

1.3 测试IK分词器

NOTE: IK分词器提供了两种mapping类型用来做文档的分词分别是 ik_max_wordik_smart

ik_max_word 和 ik_smart 什么区别?

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

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

测试数据

DELETE /emsPUT /ems
{"mappings":{"emp":{"properties":{"name":{"type":"text","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"age":{"type":"integer"},"bir":{"type":"date"},"content":{"type":"text","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"address":{"type":"keyword"}}}}
}PUT /ems/emp/_bulk{"index":{}}{"name":"小黑","age":23,"bir":"2012-12-12","content":"为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平","address":"北京"}{"index":{}}{"name":"王小黑","age":24,"bir":"2012-12-12","content":"Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式","address":"上海"}{"index":{}}{"name":"张小五","age":8,"bir":"2012-12-12","content":"Spring Cloud 作为Java 语言的微服务框架,它依赖于Spring Boot,有快速开发、持续交付和容易部署等特点。Spring Cloud 的组件非常多,涉及微服务的方方面面,井在开源社区Spring 和Netflix 、Pivotal 两大公司的推动下越来越完善","address":"无锡"}{"index":{}}{"name":"win7","age":9,"bir":"2012-12-12","content":"Spring的目标是致力于全方位的简化Java开发。 这势必引出更多的解释, Spring是如何简化Java开发的?","address":"南京"}{"index":{}}{"name":"梅超风","age":43,"bir":"2012-12-12","content":"Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API","address":"杭州"}{"index":{}}{"name":"张无忌","age":59,"bir":"2012-12-12","content":"ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口","address":"北京"}GET /ems/emp/_search
{"query":{"term":{"content":"框架"}},"highlight": {"pre_tags": ["<span style='color:red'>"],"post_tags": ["</span>"],"fields": {"*":{}}}
}

1.4 配置扩展词

IK支持自定义扩展词典停用词典,所谓**扩展词典就是有些词并不是关键词,但是也希望被ES用来作为检索的关键词,可以将这些词加入扩展词典。停用词典**就是有些词是关键词,但是出于业务场景不想使用这些关键词被检索到,可以将这些词放入停用词典。

如何定义扩展词典和停用词典可以修改IK分词器中config目录中l这个文件。

NOTE:词典的编码必须为UTF-8,否则无法生效

1. 修改vim l<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM ".dtd"><properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">ext_dict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">ext_stopword.dic</entry></properties>2. 在ik分词器目录下config目录中创建ext_dict.dic文件   编码一定要为UTF-8才能生效vim ext_dict.dic 加入扩展词即可3. 在ik分词器目录下config目录中创建ext_stopword.dic文件 vim ext_stopword.dic 加入停用词即可4.重启es生效

1.5 新增扩展词测试

  • 创建ext_dict.dic和ext_stopword.dic文件

  • 配置前

  • 添加分词

  • ​ 重启ElasticSearch后测试

  • 代码
GET /_analyze
{"text": "你是想碰瓷吗","analyzer": "ik_max_word"
}PUT /ems/emp/1
{"name": "惊天秘密","age": 23,"bir": "2020-12-12","content": "今天发生了一起碰瓷事件","address": "北京"
}GET /ems/emp/_search
{"query": {"term": {"content": {"value": "碰瓷"}}}
}

1.6 远程扩展词典

  • 配置一个web项目,新建和文件

  • 本地localhost访问测试是否能读取到(只需确保文件是UTF-8,无需关注浏览器是否乱码)

  • window系统下cmd输入ipconfig命令查看IP地址

  • 在LINUX中测试是否能连接上

  • 如果无法连通,

  • 然后继续修改l文件

  • 打开注释,填入访问路径

  • 未重启ElasticSearch前

    默认把每个词拆分,搜索也搜索不到

    • 重启ElasticSearch,重启时也看到了已经获取到词典了

    • 此时杠精这个词已经成了一个词典,而且能被搜索出来了

      • 另外:ElasticSearch是一直监听着远程接口的,远程更新时,ElasticSearch也会自动更新,无需重启ElasticSearch。

本文发布于:2024-01-28 05:39:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063915935190.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23