ElasticSearch(六)【分词器】

news/2024/4/30 1:12:55/文章来源:https://blog.csdn.net/Wei_Naijia/article/details/126923442

六、分词器


6.1 分词器介绍

Analysis 和 Analyzer

Analysis:文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词(Analyzer)。Analysis是通过Analyzer来实现的。分词就是将文档通过Analyzer分成一个一个的Term,每一个Term都指向包含这个Term的文档

Analyzer 组成

注意】:在ES中默认使用标准分词器:StandardAnalyzer特点:中文单字分词/单词分词
我是中国人this is a good man---->analyzer—>我 是 中 国 人 this is a good man

  • 分析器(analyzer)都由三种构件组成的:character filterstokenizerstoken filters
    • Character Filter 字符过滤器
      • 在一段文本进行分词之前,先进行预处理,比如说最常见的就是,过滤html标签(hello–> hello),&–> and,(I&you–>I and you)
    • Tokenizers 分词器
      • 英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词
    • Token Filters Token过滤器
      • 将切分的单词进行加工。大小写转换(例将"Quick"转为小写),去掉停用词(例如停用词像"a"、“and”、“the"等等),加入同义词(例如同义词像"jump"和"leap”)

注意

  • 三者顺序:Character Filter—>Tokenizers—>Token Filter
  • 三者个数:Character Filter(0个或多个)+ Tokenizers + Token Filters(0个或多个)

内置分词器

  • Standard Analyzer:默认分词器,英文按单词切分,并小写处理
  • Simple Analyzer:按照单词切分(符号被过滤),小写处理
  • Stop Analyzer:小写处理,停用词过滤(the、a、is…)
  • Whitespace Analyzer:按照空格切分,不转小写
  • Keyword Analyzer:不分词,直接将输入当作输出

6.2 内置分词器测试

  • Standard Analyzer 标准分词器
    • 特点:按照单词分词,英文统一转为小写,过滤标点符号,中文单子分词
POST /_analyze
{"analyzer": "standard","text": "我是中国人, this is a good Man"
}

在这里插入图片描述

  • Simple Analyzer 简单分词器
    • 特点:按照单词分词,英文统一转为小写,过滤标点符号,中文不分词(按照"空格"或标点符号分词)
POST /_analyze
{"analyzer": "simple","text": "我是,中国人, this is a good Man"
}

在这里插入图片描述

  • WhitespaceAnalyzer 空格分词器
    • 特点:中文、英文按照空格分词,英文不会转为小写,不去掉标点符号
POST /_analyze
{"analyzer": "whitespace","text": "我是中国人, this is a good Man"
}

在这里插入图片描述

  • Keyword Analyzer 关键词分词器
    • 特点:将输入的内容当作一个关键词
POST /_analyze
{"analyzer": "keyword","text": "我是中国人, this is a good Man"
}

在这里插入图片描述

6.3 创建索引设置分词

# 创建时,默认使用标准分词器 "analyzer": "standard"
PUT /analyzer
{"settings": {},"mappings": {"properties": {"title": {"type": "text","analyzer": "standard"}}}
}

6.4 中文分词器

在ES中支持中文分词器非常多,如smartCN、IK等,这里推荐使用IK分词器

安装IK

github网站:https://github.com/medcl/elasticsearch-analysis-ik

注意

  • IK分词器的版本要与安装ES的版本一致
  • Docker容器运行ES安装插件目录为/usr/share/elasticsearch/plugins
# 1.下载对应版本到本地
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip# 2.解压(建议本地下载之后,手动解压,再使用xftp将解压后的文件上传到linux)
unzip elasticsearch-analysis-ik-6.2.4.zip ik-7.14.0	(如果没有unzip命令,先使用"yum install -y unzip"进行安装)# 3.移动到es安装目录的plugis目录中(不推荐使用,如果是手动解压,可以忽略此步骤往下看)
mv ik-7.14.0 elasticsearch-analysis-ik-6.2.4/plugins/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用数据卷挂载的方式

# 1.先停止对应docker容器
docker-compose down# 2.修改docker-compose.yml文件,如下图所示
# 将当前的路径下的ik-7.14.0文件映射到容器内部中的/usr/share/elasticsearch/plugins/ik-7.14.0文件,同时删除volumes下的plugin

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

############################################### 内容如下 ###############################################
version: "3.8"
volumes:data:config:
networks:es:
services:elasticsearch:image: elasticsearch:7.14.0ports:- "9200:9200"- "9300:9300"networks:- "es"environment:- "discovery.type=single-node"- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data:/usr/share/elasticsearch/data- config:/usr/share/elasticsearch/config- ./ik-7.14.0:/usr/share/elasticsearch/plugins/ik-7.14.0kibana:image: kibana:7.14.0ports:- "5601:5601"networks:- "es"volumes:- ./kibana.yml:/usr/share/kibana/config/kibana.yml###############################################  ###############################################

6.5 IK使用

IK有两种颗粒度的拆分

  • ik_smart:会做粗粒度的拆分
  • ik_max_word:会将文本做最细粒度的拆分

ik_smart测试

POST /_analyze
{"analyzer": "ik_smart","text": "中华人民共和国国歌"
}

在这里插入图片描述

ik_max_word测试

POST /_analyze
{"analyzer": "ik_max_word","text": "中华人民共和国国歌"
}

在这里插入图片描述

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

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

相关文章

k8s创建并发布WordPress

WordPress 简介 WordPress 是使⽤ PHP 语⾔开发的内容管理系统软件,⽤户可以在⽀持 PHP 和 MySQL 数据库的服务器上使⽤⾃⼰的博客,⼀个完整的 WordPress 应⽤程序包括以下 Kubernetes 对象。 ⽬的 演示如何在 KubeSphere 中创建应⽤程序(以…

Springboot毕设项目基于Java的比亚迪汽车大数据评分系统c34pk(java+VUE+Mybatis+Maven+Mysql)

Springboot毕设项目基于Java的比亚迪汽车大数据评分系统c34pk(javaVUEMybatisMavenMysql) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEc…

公众号查题方法-授权即可使用

公众号查题方法-授权即可使用 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台&#x…

SpringSecurity系列 - 13 SpringSecurity 密码加密认证 PasswordEncoder

文章目录01. 密码加密算法简介02. 环境准备03. 认证流程源码分析步骤1: AbstractAuthenticationProcessingFilter#doFilter 认证请求入口方法步骤2:UsernamePasswordAuthenticationFilter#attemptAuthentication 尝试认证方法步骤3:ProviderM…

MySQL-锁

MySQL-锁 锁分类 MySQL中锁按照粒度分,分为以下三类 全局锁:锁定数据库中的所有表表级锁:每次操作锁住整张表行级锁:每次操作锁住对应的行数据 全局锁 全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状…

Koltin协程:异步热数据流的设计与使用

一.异步冷数据流 在Kotlin协程:协程的基础与使用中,通过使用协程中提供的flow方法可以创建一个Flow对象。这种方法得到的Flow对象实际上是一个异步冷数据流,代码如下: private suspend fun test() {val flow flow {emit(1)emit(…

ESP8266升級SDK到V3.0版本編譯報錯

編譯報錯信息 bin/libmain2.a(app_main.o): In function `user_uart_wait_tx_fifo_empty: (.irom0.text+0x678): undefined reference to `user_pre_init bin/libmain2.a(app_main.o): In function `system_phy_freq_trace_enable: (.irom0.text+0x6e4): undefined reference t…

SpringCloud基础7——Redis分布式缓存

用于复习快速回顾。 目录 1.Redis持久化 1.1.数据备份文件RDB持久化方案 1.1.1.执行时机 1.1.2.RDB原理 1.1.3.小结,bgsave流程、执行时间、缺点 1.2.追加文件AOF持久化方案 1.2.1.AOF原理 1.2.2.AOF配置 1.2.3.AOF文件重写 1.3.RDB与AOF对比 2.Redis主…

getBean方法源码

一、 三个API // 根据name获取bean Override public Object getBean(String name) throws BeansException {return doGetBean(name, null, null, false); }// 根据name获取bean&#xff0c;如果获取到的bean和指定类型不匹配&#xff0c;则抛出异常 Override public <T>…

C++11 - 8 -智能指针

C11 - 智能指针前言&#xff1a;普通指针&#xff1a;安全隐患&#xff1a;其他函数异常&#xff1a;new函数异常&#xff1a;智能指针&#xff1a;RAII原理&#xff1a;smart_ptr&#xff1a;auto_ptr&#xff1a;管理权转移&#xff1a;优点&#xff1a;缺点&#xff1a;uniq…

报告分享|2022汽车生态营销白皮书

报告链接&#xff1a;http://tecdat.cn/?p28679 不确定性增加&#xff0c;消费意愿在压力下等待释放 今年3月以来&#xff0c;受国际冲突和国内环境双重影响&#xff0c;能源价格大幅上涨&#xff0c;导致全球供应不稳定趋势加深&#xff0c;宏观经济下行压力明显&#xff0…

程序设计竞赛-过了这个村没这个店

文章目录个人经验竞赛简介蓝桥杯天梯赛CCPCICPC其他个人经验 初闻不知曲中意&#xff0c;再闻已是曲中人。 标题无意夸张&#xff0c;但是竞赛生涯的时间真的不长&#xff0c;机会真的错过了就没有了。一般来说&#xff0c;大一打基础&#xff0c;学习编程语言、数据结构和算法…

Moment.js的常用函数、借助vue和Moment.js实现一个简单的时钟

前言 项目中关于时间的处理是挺常见的&#xff0c;虽然之前就知道有Moment.js这个库&#xff0c;但是一直没有接触过。只不过最近同事在项目中使用了&#xff0c;那也只能简单学习一下&#xff0c;不然遇到了完全看不懂。 本文只介绍一下常用的函数&#xff0c;其他内容可以在…

想换工作?那还不赶紧来看看这份面试题

引言 “寒冬”之下&#xff0c;诸如 “Android 凉了”之类的话我已经屡见不鲜了&#xff0c;现在互联网行业的热潮已经褪去&#xff0c;开始恢复冷静&#xff1b;这样一来&#xff0c;互联网公司就会面向大量的开发者们&#xff0c;因此对应的要求只会越来越高&#xff1b;据反…

用纯css实现一个图片拼接九宫格

<style> body{ margin: 0; padding: 0; // 设定居中 display: flex; justify-content: center; align-items: center; height: 100vh; } .container{ width: 300px; height: 300px; display: flex; // 子盒子布局&#xff0c;要让子盒子之间有间隙就把宽高设大一些。 jus…

报告分享|2022年中国机器人产业图谱及云上发展研究报告

报告链接&#xff1a;http://tecdat.cn/?p28681 报告在分析当前我国机器人市场现状与产业图谱的基础上&#xff0c;对人工智能、5G、云计算、边缘计算等新兴技术赋能机器人智能化、轻量化、柔性化发展进行了理性探讨&#xff0c;结合阿里云加速器企业案例探讨了机器人企业的上…

连接查询-mysql详解(五)

上篇文章说了&#xff0c;mysql5.6.6版本之前数据默认在系统表空间&#xff0c;之后默认在独立表空间&#xff0c;innodb因为索引和数据在一个b树&#xff0c;所以两个文件&#xff0c;一个文件结构&#xff0c;一个存数据&#xff0c;myISAM则是三个文件。一个聚簇索引有两个段…

小程序云开发学习笔记

小程序云开发学习笔记 初始化 在app.js里面 小程序一开始就初始化&#xff0c;多次调用只有第一次触发 onLaunch() { console.log("小程序打开"); wx.cloud.init({ env: ayang-8g50ew302a3a6c5a, //云开发id }) } 数据库操作 查询&#xff08;一定要配置数据权限&a…

高等工程数学 —— 第一章 (1)距离与范数

前言 研一生活开始了&#xff0c;看了大家对我之前博客的鼓励让我知道写博客是一件多么有意义的事情。写这些让我遇见许多陌生的有缘人&#xff0c;有老骥伏枥的大叔、也有可爱温暖的学妹…… 这里将高等工程数学的笔记留给不爱吃香菜的月亮&#xff0c;希望这些陪伴过我的微光…

ElasticSearch(四)【高级查询】

四、高级查询 说明 ES中提供了一种强大的检索数据方式&#xff0c;这种检索方式称之为Query DSL&#xff0c;Query DSL是利用Rest API传递JSON格式的请求体&#xff08;Request Body&#xff09;数据与ES进行交互&#xff0c;这种方式的丰富查询语法让ES检索变得更强大&#xf…