Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(本地)

在这里插入图片描述
在这里插入图片描述

背景: IK分词提供的两个分词器,并不支持一些新的词汇,有时候也不能满足实际业务需要,这时候,我们可以定义自定义词库来完成目标。
目标: 定制化中文分词器,使得我们的中文分词器支持扩展的词汇

文章目录

          • 一、搜索现状
            • 1. 搜索关键词
            • 2. 数据结果
            • 3. 数据分析
            • 4. ES IK分词
            • 5. IK分词结果+分析
          • 二、定制化分词器
            • 2.1. 新增分词词典库
            • 2.2. 词典配置
            • 2.3. 重启es7
            • 2.4. 重新查看分词结果
            • 2.5. 重新搜索
            • 2.6. 重建分词索引
            • 2.7. 再次查询
            • 2.8. 数据分析

一、搜索现状
1. 搜索关键词
# 搜索凯悦相关的酒店
GET /shop/_search
{"query":{"match": {"name":"凯悦"}}
}
2. 数据结果
{"took" : 7,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 5,"relation" : "eq"},"max_score" : 3.3362136,"hits" : [{"_index" : "shop","_type" : "_doc","_id" : "9","_score" : 3.3362136,"_source" : {"price_per_man" : 176,"remark_score" : 2.2,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.916Z","tags" : "落地大窗","location" : "31.306172,121.525843","seller_remark_score" : 3.0,"id" : 9,"name" : "凯悦酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "10","_score" : 2.836244,"_source" : {"price_per_man" : 182,"remark_score" : 0.5,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.918Z","tags" : "自助餐","location" : "31.196742,121.322846","seller_remark_score" : 3.0,"id" : 10,"name" : "凯悦嘉轩酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "11","_score" : 2.836244,"_source" : {"price_per_man" : 74,"remark_score" : 1.0,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.920Z","tags" : "自助餐","location" : "31.156899,121.238362","seller_remark_score" : 3.0,"id" : 11,"name" : "新虹桥凯悦酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "12","_score" : 2.638537,"_source" : {"price_per_man" : 71,"remark_score" : 2.0,"category_name" : "美食2","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.923Z","tags" : "有包厢","location" : "30.679819,121.651921","seller_remark_score" : 3.0,"id" : 12,"name" : "凯悦咖啡(新建西路店)","seller_id" : 17,"category_id" : 1}},{"_index" : "shop","_type" : "_doc","_id" : "4","_score" : 1.3119392,"_source" : {"price_per_man" : 152,"remark_score" : 2.0,"category_name" : "美食2","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.907Z","tags" : "落地大窗 有WIFI","location" : "31.306419,121.524878","seller_remark_score" : 2.0,"id" : 4,"name" : "花悦庭果木烤鸭","seller_id" : 2,"category_id" : 1}}]}
}
3. 数据分析

上面数据中有一条不符的结果数据,此数据中无**“凯悦”**关键词,但是,搜索后还是显示在页面上,不符合预期搜索结果。

 {"_index" : "shop","_type" : "_doc","_id" : "4","_score" : 1.3119392,"_source" : {"price_per_man" : 152,"remark_score" : 2.0,"category_name" : "美食2","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.907Z","tags" : "落地大窗 有WIFI","location" : "31.306419,121.524878","seller_remark_score" : 2.0,"id" : 4,"name" : "花悦庭果木烤鸭","seller_id" : 2,"category_id" : 1}}
4. ES IK分词
# 查阅凯悦分词
GET /shop/_analyze
{"analyzer": "ik_smart","text": "凯悦"
}
5. IK分词结果+分析
{"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}]
}

从上面数据可以看出,使用ik_smart分词api,分词“凯”,“悦”,并没有将“凯悦”关键词当做一个分词元素,主要原因就是,es安装的ik中文分词库中没有将“凯悦”放入分词库。

二、定制化分词器
2.1. 新增分词词典库
cd /app/elasticsearch-7.15.2/config/analysis-ik/
vim new_word.dic

添加自定义分词

凯悦
2.2. 词典配置

使用ik加载我们自定义的分词词典库

vim IKAnalyzer.cfg.xml

内容:

<?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">new_word.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

在这里插入图片描述

2.3. 重启es7
ps -ef|grep elasticsearch
kill -9 es进程号
cd /app/elasticsearch-7.15.2/
bin/elasticsearch -d

在这里插入图片描述

2.4. 重新查看分词结果
# 查阅凯悦分词
GET /shop/_analyze
{"analyzer": "ik_smart","text": "凯悦"
}GET /shop/_analyze
{"analyzer": "ik_max_word","text": "凯悦"
}

在这里插入图片描述

2.5. 重新搜索
GET /shop/_search
{"query":{"match": {"name":"凯悦"}}
}

在这里插入图片描述

GET /shop/_search

在这里插入图片描述

发现一条数据都没查询出来,但是,数据都还在。

2.6. 重建分词索引

索引创建的时候,是在ik分词器上当时没有“凯悦”这个词的时候。目前,我们凯悦酒店这条记录对应的记录”凯和悦”已经在索引成型,单字的”凯”和单字“悦”。因为在擦黄建索引的时候,并没有做分词的扩展分词库加载。

目前的问题,现在索引中存储的是”凯和悦”分开的,但是我搜索的时候,执行的凯悦,却是按照搜索当前search的分词器,也就是分出来的是”凯和悦”连字存在。

我搜索是2个字,但是倒排索引的时候是按照单字做搜引得,因此导致搜素数据为空。

解决方案:

第一种(第一次):把索引全部删除,然后全量同步分词索引
第二种(推荐):针对搜索的索引中包含“凯“或者“悦“的索引执行重建索引,其他的索引不重建索引。

# 重建凯悦分析索引
POST /shop/_update_by_query
{"query": {"bool": {"must": [{"term":{"name":"凯"}},{"term":{"name":"悦"}}]}}
}
2.7. 再次查询
GET /shop/_search
{"query":{"match": {"name":"凯悦"}}
}
2.8. 数据分析
{"took" : 3,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4,"relation" : "eq"},"max_score" : 2.0709352,"hits" : [{"_index" : "shop","_type" : "_doc","_id" : "9","_score" : 2.0709352,"_source" : {"price_per_man" : 176,"remark_score" : 2.2,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.916Z","tags" : "落地大窗","location" : "31.306172,121.525843","seller_remark_score" : 3.0,"id" : 9,"name" : "凯悦酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "10","_score" : 1.7177677,"_source" : {"price_per_man" : 182,"remark_score" : 0.5,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.918Z","tags" : "自助餐","location" : "31.196742,121.322846","seller_remark_score" : 3.0,"id" : 10,"name" : "凯悦嘉轩酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "11","_score" : 1.7177677,"_source" : {"price_per_man" : 74,"remark_score" : 1.0,"category_name" : "酒店","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.920Z","tags" : "自助餐","location" : "31.156899,121.238362","seller_remark_score" : 3.0,"id" : 11,"name" : "新虹桥凯悦酒店","seller_id" : 17,"category_id" : 2}},{"_index" : "shop","_type" : "_doc","_id" : "12","_score" : 1.5828056,"_source" : {"price_per_man" : 71,"remark_score" : 2.0,"category_name" : "美食2","@version" : "1","seller_disabled_flag" : 0,"@timestamp" : "2021-11-21T04:10:03.923Z","tags" : "有包厢","location" : "30.679819,121.651921","seller_remark_score" : 3.0,"id" : 12,"name" : "凯悦咖啡(新建西路店)","seller_id" : 17,"category_id" : 1}}]}
}

从上面数据可以看出,符合预期结果!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多点在线构建Noxmobi全球化精准营销系统

摘要&#xff1a;大数据计算服务(MaxCompute&#xff0c;原名ODPS)是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型&#xff0c;能够更快速的解决用户海量数据计算问题&#xff0c;有效降低企业成本&am…

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)

IK分词提供的两个分词器&#xff0c;并不支持一些新的词汇&#xff0c;有时候也不能满足实际业务需要&#xff0c;这时候&#xff0c;我们可以定义自定义词库来完成目标。 文章目录一、静态web搭建1. 安装nginx2. 创建es目录3. 创建分词文件4. 存放静态5. 验证二、配置远程分词…

万博智云上云 单机软件升级多并发SaaS平台

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 业务痛点 自2016年开发迁移工具主要面向私有云环境&#xff0c;但是随着公有云用户越来…

学会这10大高性能开发技术,轻松躲过裁员名单!

来源 | 编程技术宇宙责编 | Carol封图 | CSDN 下载自视觉中国程序员经常要面临的一个问题就是&#xff1a;如何提高程序性能&#xff1f;这篇文章&#xff0c;我们循序渐进&#xff0c;从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进&#xff0c;串联起高性能开…

开放搜索助力提升趣店商城20%转化率

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 趣店集团&#xff0c;成立于2014年3月&#xff0c;是中国领先的金融科技企业&…

Elasticsearch7.15.2 修改IK分词器源码实现基于MySql8的词库热更新

文章目录一、源码分析1. 默认热更新2. 热更新分析3. 方法分析二、词库热更新2.1. 导入依赖2.2. 数据库2.3. JDBC 配置2.4. 打包配置2.5. 权限策略2.6. 修改 Dictionary2.7. 热更新类2.8. 编译打包2.9. 上传2.10. 修改记录三、服务器操作3.1. 分词插件目录3.2. 解压es3.3. 移动文…

母婴企业上云 实现线上线下互动营销、一体化管理服务

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 主要从事母婴产品的销售&#xff0c;拥有三家门店&#xff0c;未上云之前采用…

确认! Python再次夺冠,老码农:崩溃!

2020年转眼已过大半&#xff0c;在近一年的编程语言榜单中&#xff0c;Python已经走上卫冕的道路&#xff0c;并且与Java的差距拉得更远了一些。以往与Java常呈现你追我赶之势&#xff0c;而这一次则是直接相差由10%增加到15%&#xff01;毋庸置疑Python的火&#xff0c;有目共…

SAP与阿里云的深度合作 为企业提供领先的SaaS 服务

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 什么是企业IT治理&#xff1f; 企业IT治理是对企业中IT资源的合理规划和分配&#xff0…

Docker JFrog Artifactory 7.27.10 maven私服(搭建篇)

文章目录一、docker 准备1. 安装docker2. 启动docker3. 监控docker状态二、docker 镜像2.1. 搜索JFrog Artifactory镜像2.2. 拉取镜像2.3. 开放对应端口2.4. 浏览器验证2.5. 登录一、docker 准备 1. 安装docker yum install docker2. 启动docker systemctl start docker3. 监…

阿里妈妈数据字化营销与MaxCompute的不解之缘

摘要&#xff1a; 大数据计算服务&#xff08;MaxCompute&#xff09;是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案&#xff0c;目前已在阿里巴巴内部得到大规模应用。来自阿里妈妈基础平台大规模数据处理技术专家向大家分享了MaxCompute在阿里妈妈数据字化营销解决方案…

年薪201万的华为“天才少年”曾是三本复读生,逆袭就是抓住每一次提升自己的机会 | AI大赛报名开启

当我们看到“华为最高档天才少年年薪201万的话题”冲上热搜时&#xff0c;大多数人一辈子也无法企及的数字让我们羡慕不已。而入选的大部分是计算机、软件工程、模式识别与智能系统专业&#xff0c;尽管我们知道这些专业很火&#xff0c;薪资很高&#xff0c;但对于百万年薪来说…

redux中间件原理-讲义

1、redux中间件简介 1.1、什么是redux中间件 redux 提供了类似后端 Express 的中间件概念&#xff0c;本质的目的是提供第三方插件的模式&#xff0c;自定义拦截 action -> reducer 的过程。变为 action -> middlewares -> reducer 。这种机制可以让我们改变数据流&…

MySQL8.0.26 开启bin_log日志 linux

binlog日志&#xff0c;即binary log&#xff0c;是二进制日志文件。它有两个作用&#xff0c;一是增量备份&#xff0c;即只备份新增的内容&#xff1b;二是用于主从复制等&#xff0c;即主节点维护了一个binlog日志文件&#xff0c;从节点从binlog中同步数据。我们可以通过bi…

基于阿里云 MaxCompute 构建企业云数据仓库CDW

在本文中阿里云资深产品专家云郎分享了基于阿里云 MaxCompute 构建企业云数据仓库CDW的最佳实践建议。 本文内容根据演讲视频以及PPT整理而成。 大家下午好&#xff0c;我是云郎&#xff0c;之前在甲骨文做企业架构师8年&#xff0c;目前是MaxCompute产品经理。 在这么长的客户…

大咖说中台 | 建设数据中台系列(五)——中台架构详解(下)

作者 | 耿立超来源 | 《大数据平台架构与原型实现&#xff1a;数据中台建设实战》本质上&#xff0c;中台是一种中心化、平台化的企业组织架构和业务形态&#xff0c;当这样的组织和业务架构投射到IT 系统上时会自然地形成我们今天讨论的IT 意义上的“中台”。笔者曾经参与过不…

阿里风控大脑如何应用大数据来构建风控体系?

简介&#xff1a; 2019年双11阿里风控保护了约388亿消费者的操作行为&#xff0c;同时挡住了约22亿次恶意攻击。在首席技术官大数据专享会&#xff0c;阿里巴巴新零售技术事业群高级数据技术专家丁明峰为大家介绍了阿里风控大脑关于大数据应用的探索与实践&#xff0c;即风控领…

DataWorks 如何撑起阿里99%的数据开发?

阿里妹导读&#xff1a; DataWorks是阿里巴巴自主研发&#xff0c;支撑阿里巴巴经济体99%数据业务建设和治理&#xff0c;每天数万名数据开发和算法开发工程师在使用。从2010年起步到目前的版本&#xff0c;经历了多次技术变革和架构升级&#xff0c;也遗留了大量的历史包袱。…

实用小技能 | 用 Word 和 Excel 自制一个题库自判断答题系统!

作者 | 杨秀璋责编 | 夕颜来源 | CSDN博客 如果你需要做题库&#xff0c;并且喜欢电子答题的方法&#xff0c;这篇文章或许会对你有所帮助。反正李老师班级的平均成绩高出其他班级的14分&#xff0c;这就是它的好处&#xff0c;希望这篇文章对我今后的学生有所帮助吧&#xff0…

使用canal实现MySQL 8 全量同步数据到 ElasticSearch 7.15.2中 linux

文章目录一、软件安装1. jdk 安装2. ES7.15.2 安装3. Mysql 8.0 安装4. canal下载二、Mysql 配置2.1. 开启binlog2.2. 验证binlog状态2.3. 创建账号2.4. 权限赋予2.5. 刷新权限2.6. 创建数据库2.7. 初始化表结构2.8. 初始化数据三、canal-deployer的配置与使用3.1. 解压deploye…