(七) ElasticSearch 分词器

1.分词器

分词器是 Elasticsearch 用于将文本拆分为单词(词项)的组件,以便于搜索和索引。以下是一些关于 Elasticsearch 分词器的常见问题和相关操作的介绍:

1)什么是分词器?

分词器是 Elasticsearch 中的一个组件,用于将文本转换为词项,以便于搜索和索引。它负责将输入的文本进行拆分、标准化和处理,生成最终的词项列表。

2)常用分词器

Elasticsearch 提供了多个内置的分词器,每个分词器适用于不同的场景和需求。以下是一些常用的内置分词器:

  • standard 分词器:
    standard 分词器是 Elasticsearch 默认的分词器,适用于大多数情况。它会根据空格和标点符号将文本拆分为词项,并进行小写转换和标点符号过滤。
  • simple 分词器:
    simple 分词器会根据非字母字符将文本拆分为词项,并将词项转换为小写。它不会进行标点符号和停用词的过滤。
  • whitespace 分词器:
    whitespace 分词器会根据空格字符将文本拆分为词项。它不会进行小写转换、标点符号过滤和停用词过滤。
  • keyword 分词器:
    keyword 分词器不会对文本进行拆分,将整个文本作为一个词项。它通常用于不需要进行分词的字段,如关键字字段或精确匹配字段。
  • pattern 分词器:
    pattern 分词器根据正则表达式模式将文本拆分为词项。你可以指定自定义的正则表达式模式来满足特定的分词需求。
  • stop 分词器:
    stop 分析器 和 simple 分析器很像,唯⼀不同的是,stop 分析器增加了对删除停⽌词的⽀
    持,默认使⽤了english停⽌词,stopwords 预定义的停⽌词列表,⽐如 (the,a,an,this,of,at)等等。
  • language 分词器:
    Elasticsearch 还提供了多个针对特定语言的分词器,如 english、chinese、french 等。这些分词器会根据特定的语言规则和特征进行分词处理,以提供更准确的分词效果。

3)测试分词器

这里是一个简单的示例,演示如何使用内置的 standard 分词器测试文本的分词效果:

POST _analyze
{"analyzer": "standard","text": "Hello world, this is Elasticsearch"
}

以上操作会将文本 “Hello world, this is Elasticsearch” 使用 standard 分词器进行分析,并返回分词结果。

4)选择分词器

创建索引时选择分词器方法
在创建索引时,可以通过指定字段的映射来指定分词器。下面是创建索引并指定字段分词器的示例:

PUT /my_index
{"settings": {"analysis": {"analyzer": {"my_analyzer": {"type": "whitespace",}},}},"mappings": {"properties": {"name": {"type": "text","analyzer": "my_analyzer"}}}
}

更换索引字段分词器方法:
要更换字段的分词器,需要重新定义字段的映射,并指定新的分词器。下面是更换字段分词器的一般步骤:
1.关闭索引:

POST /索引名/_close

2.更新字段映射:

PUT /索引名/_mapping
{"properties": {"字段名": {"type": "text","analyzer": "新的分词器"}}
}

3.打开索引:

POST /索引名/_open

5)中文分词器

使用中文分词器的主要目的是对中文文本进行正确、准确的分词处理。中文与英文等拉丁语系的语言不同,它没有明确的词语分隔符(如空格),因此直接对中文进行全文匹配会导致词语的混淆和错误。

当涉及到中文分词器时,两个常用的选择是 Smart Chinese Analyzer(smartcn)和 IK Analyzer。

Smart Chinese Analyzer(smartcn):
Smart Chinese Analyzer 是 Elasticsearch 内置的中文分词器,它使用机器学习算法进行分词,并且适用于简体中文和繁体中文。
Smart Chinese Analyzer 的优点是易于使用,无需额外配置即可使用。它具有较高的分词准确性和召回率,适用于大多数中文文本的索引和搜索。

安装:

sh elasticsearch-plugin install analysis-smartcn

安装后重新启动ES

在创建索引时,可以将字段的分词器指定为 “smartcn”。

PUT /索引名
{"settings": {"analysis": {"analyzer": {"my_analyzer": {"type": "smartcn"}}}},"mappings": {"properties": {"字段名": {"type": "text","analyzer": "my_analyzer"}}}
}

卸载:

 sh elasticsearch-plugin remove analysis-smartcn

IK Analyzer:

IK Analyzer 是一个第三方的中文分词器,它基于开源项目 IK Analysis 进行开发。IK Analyzer 提供了细粒度的中文分词能力,支持词库扩展和自定义词典。
IK Analyzer 的优点是可以根据具体需求进行配置和定制,支持停用词过滤、同义词扩展等功能。它适用于对中文文本的更精确分词和分析需求。
在创建索引时,可以将字段的分词器指定为 “ik_max_word” 或 “ik_smart”。“ik_max_word” 会尽可能多地进行分词,而 “ik_smart” 则会更加智能地进行分词。

下载
https://github.com/medcl/elasticsearch-analysis-ik/releases

安装 解压安装到plugins⽬录

安装后重新启动

示例:

PUT /索引名
{"settings": {"analysis": {"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "ik_max_word"}}}},"mappings": {"properties": {"字段名": {"type": "text","analyzer": "my_analyzer"}}}
}

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

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

相关文章

python模块 — 加解密模块rsa,cryptography

一、密码学 1、密码学介绍 密码学(Cryptography)是研究信息的保密性、完整性和验证性的科学和实践。它涉及到加密算法、解密算法、密钥管理、数字签名、身份验证等内容。 密码学中的主要概念包括: 1. 加密算法:加密算法用于将…

4.利用matlab符号矩阵的四则运算(matlab程序)

1.简述 符号对象的建立 sym函数 sym函数用于建立单个符号对象,其常用调用格式为: 符号对象名sym(A) 1 将由A来建立符号对象,其中,A可以是一个数值常量、数值矩阵或数值表达式(不加单引号),此时符号对象为一个符号常量;…

【强化学习】值函数算法DQNs详解【Vanilla DQN Double DQN Dueling DQN】

DQNs【Vanilla DQN & Double DQN & Dueling DQN】 文章目录 DQNs【Vanilla DQN & Double DQN & Dueling DQN】1. DQN及其变种介绍1.1 Vanilla DQN1.2 Double DQN1.3 Dueling DQN 2. Gym环境介绍2.1 Obseravtion Space2.2 Reward Function2.3 Action Space 3. D…

OptaPlanner笔记4

2.2.8. 创建应用程序 创建SolverFactory 来为每个数据集构建Solver加载数据集使用Solver.solve()进行求解输出数据集的解决方案 通常一个应用包含一个SolverFactory 来为每个要求解的问题数据集构建新的Solver实例。SolverFactory是线程安全的,但Solver不是。 im…

《树莓派项目实战》第十五节 使用L298N驱动板模块驱动双极42步进电机

目录 15.1 双极步进电机引脚介绍 15.2 连接到树莓派 15.3 编写代码驱动步进电机 在本节,我们将学习如何使用L298N驱动板驱动一个双极42步进电机。该项目涉及到的材料有: 树莓派

28 | Boss直聘数据分析

针对boss直聘网的招聘信息,然后分析互联网发展排名前十的城市在互联网方面职位的薪水,学历要求,经验要求,等等信息。 准备从以下几个方面进行分析: (1)各个城市的平均工资 (2)各个学历的平均工资 (3)各个岗位的平均工资 (4)不同工作经验要求的工资 (5)各个经验…

HTML网页制作技巧:打造出色的用户体验

HTML是构建网页的基础语言,掌握一些关键的技巧可以帮助您创建出色的用户体验。本文将介绍一些HTML网页制作的技巧,从布局和样式到交互和可访问性,为您提供有用的指导。无论您是初学者还是有经验的开发者,这些技巧都将对您的网页设…

LinuxC编程——进程间通信(一)(管道)

目录 一、Linux平台通信方式发展史二、进程间通信方式⭐⭐⭐三、无名管道3.1 特点⭐⭐⭐3.2 函数pipe3.3 注意事项⭐⭐⭐3.4 练习 四、有名管道4.1 特点⭐⭐⭐4.2 函数 mkfifo4.3 注意事项⭐⭐4.4 练习 五、无名管道与有名管道对比⭐⭐ 复杂的编程环境通常使用多个相关的进程来…

CTF-Flask-Jinja2(持续更新)

放心,我会一直陪着你 一.知识一.在终端的一些指令1.虚拟环境2.docker容器二.SSTI相关知识介绍1.魔术方法2.python如何执行cmd命令3.SSTI常用注入模块(1)文件读取(2)内建函数eval执行命令(3)os模块执行命令(4)importlib类执行命令(5)linecache函数执行命令(6)subproc…

线性代数(二) 矩阵及其运算

前言 行列式det(A) 其实表示的只是一个值 ∣ a b c d ∣ a d − b c \begin{vmatrix} a & b\\ c & d\end{vmatrix} ad -bc ​ac​bd​ ​ad−bc,其基本变化是基于这个值是不变。而矩阵表示的是一个数表。 定义 矩阵与线性变换的关系 即得 ( a 11 a 12…

逆向破解学习-登山赛车

试玩 课程中的内容 Hook代码 import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage;public class HookComYoDo1SkiSafari2TXYYB_01 extends HookImpl{Overridepublic String p…

科技云报道:一波未平一波又起?AI大模型再出邪恶攻击工具

AI大模型的快速向前奔跑,让我们见识到了AI的无限可能,但也展示了AI在虚假信息、深度伪造和网络攻击方面的潜在威胁。 据安全分析平台Netenrich报道,近日,一款名为FraudGPT的AI工具近期在暗网上流通,并被犯罪分子用于编…

tensotflow中tf.title()和tf.broadcast()

tf.tile() 和 tf.broadcast_to() 都是 TensorFlow 中用于张量复制的函数,但它们的实现方式和使用场景略有不同。 tf.tile() 函数的定义如下: tf.tile(input, multiples, nameNone) 其中,input 表示要复制的张量,multiples 表示…

Vue输入框或者选择框无效,或者有延迟

问题剖析 使用Vue这种成熟好用的框架,一般出现奇奇怪怪的问题都是因为操作不当导致的,例如没有合理调用组件、组件位置不正确、没有合理定义组件或者变量、样式使用不当等等... 解决方案 如果你也出现了输入框输入东西,但是没有效果…

java8 求和

1.BigDecimal求和 对象字段求和 List<Car> listnew ArrayList<>(); BigDecimal sumOfBigDecimals list.stream().filter(Objects::nonNull).filter(c -> c.getMiles() ! null).map(Car::getMiles).reduce(BigDecimal.ZERO, BigDecimal::add);BigDecimal集合求…

(一)ES6 介绍

为什么学习ES6 ES6的版本变动内容最多&#xff0c;具有里程碑意义ES加入许多新的语法特性&#xff0c;编程实现更简单、搞笑ES6是前端发展趋势&#xff0c;就业必备技能 什么是ECMA ECMA&#xff08;European Computer Manufacturers Association&#xff09;&#xff0c;中…

如何使用异步IO编写高效的网络应用

如何使用异步IO编写高效的网络应用 在现代的网络应用中&#xff0c;处理大量的并发请求是必不可少的。传统的同步IO模式往往在面对高并发时效率低下。而异步IO则可以有效地提高网络应用的处理能力和性能。 异步IO是一种非阻塞的IO模型&#xff0c;它允许应用程序同时处理多个…

实时通信应用的开发:Vue.js、Spring Boot 和 WebSocket 整合实践

目录 1. 什么是webSocket 2. webSocket可以用来做什么? 3. webSocket协议 4. 服务器端 5. 客户端 6. 测试通讯 1. 什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务…

百度网盘非会员倍速播放(电脑端)

百度网盘非会员倍速播放&#xff08;电脑端&#xff09; 1. 打开edge浏览器&#xff0c;点击右上角的三个点后&#xff0c;选择“扩展” 2. 选择“管理扩展” 3. 选择“获取MicrosoftEdge扩展” 4. 搜索“Global Speed” 5. 选择Global Speed:视频速度控制&#xff0c;然…

PHP 求解两字符串所有公共子序列及最长公共子序列 支持多字节字符串

/*** 获取两字符串所有公共子序列【不连续的】 例&#xff1a;abc ac > ac** param string $str1 字符串1* param string $str2 字符串2** return array*/ function public_sequence(string $str1, string $str2): array {$data [[-1, -1, , 0, ]]; // 子序列容器【横坐标 …