新闻详情

新闻详情

首页 / 资讯中心 / 详情

Elasticsearch的分词器

发布时间:2026/9/29 15:07:19来源:尧图网络
Elasticsearch的分词器
分词器的执行流程Character Filter字符过滤器 → Tokenizer切词器 → Token Filter词条过滤器字符过滤器Character Filter操作对象原始完整字符串还没切词工作字符层面替换、删除、清洗。例子去掉 HTML 标签、全角转半角、正则替换。切词器Tokenizer操作对象经过字符过滤器处理后的字符串工作把连续字符串切割成一个个独立的token同时生成term词条文本position词位置match_phrase 依赖start_offset /end_offset字符起止偏移例如 standard tokenizer 按单词边界切分。词条过滤器Token Filter操作对象已经切好的单个 token工作对每个 token 里面的 term 做修改、删除、新增不会改变 token 的 position 和 offset。常见操作小写转换、去停用词、同义词、词干提取。文本正常化把token做标准化处理消除无关差异让语义相同、写法不同的文本分词后得到一样的 term。常见的正常化操作standard 分词器自带大小写转换全部转为小写Xiaomi→xiaomi这样match搜Xiaomi和xiaomi能命中同一文档。去掉变音符号重音café→cafe法语、西班牙语的重音符号剥离。删除停用词可选stop token filter英文the、a、is这类无实义虚词直接移除减少索引体积。同义词替换synonym filter手机、移动电话→ 统一映射成同一个 term。去除多余符号、特殊字符、空白自定义分词器在settings里面定义analyzer由三部分组成char_filter可选 tokenizer必须只能 1 个 filter可选token filter# 自定义分词器支持字符映射和同义词过滤PUTmy_index{settings:{analysis:{char_filter:{my_mapping:{type:mapping,mappings:[$ yuan, youjian]}},filter:{my_synonym:{type:synonym,synonyms:[xiaomi,pianyi,phone,dianhua]}},analyzer:{my_analyzer:{type:custom,char_filter:[my_mapping],tokenizer:standard,filter:[lowercase,my_synonym]}}}}}# 测试GET/my_index/_analyze{text:[xiaomi shouji $,phone],analyzer:my_analyzer}其中字符通过映射转化$ yuanphone新增了近义词dianhua。分词器插件中文使用默认的standard分词器文本将被拆分成单个字符中文一般使用ik分词器。ik分词器插件安装插件版本需和es版本对应下载地址https://release.infinilabs.com/analysis-ik/stable/得到对应版本的下载地址后在容器内执行./bin/elasticsearch-plugin install https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.15.0.zip安装后重启es测试添加扩展词典若有自定义的词组或停顿词未被正常识别可添加自定义的拓展词典然后再ik插件目录的文件中进行配置。1、新增自定义词典my_ext.dic小米手机 鸿蒙系统 豆包大模型2、将文件放入到配置目录目录地址/usr/share/elasticsearch/config/analysis-ik3、配置文件中指定自定义的词典4、重启es验证同样的方法也可以配置指定义停顿词在停顿词文件中的词条分词时会被去掉。配置远程词库本地扩展词库每次修改需要重启es服务才能生效es支持配置远程词库通过接口请求的方式热更新扩展词库。核心IK 内置Monitor 定时线程每隔1 分钟向远程 URL 发起HEAD请求校验Last-Modified/ETag任意一个发生变化则GET拉取词库内存重载词典不需要重启 ES。可以通过搭建服务或使用nginx返回对应扩展文件。1、使用nginx返回词典数据nginx配置静态服务# 服务1IK远程词典8002端口 server{listen8002;# 指定静态资源目录 root/usr/share/nginx/html;# 本server下所有返回文本默认标记utf-8charset utf-8;# 关键让txt文件也带上charset默认charset只对html生效 charset_types text/plain;location/ikdict/{# 设置文件不缓存 add_headerCache-Controlno-cache;}}2、在资源目录下添加remote_dict.txt和remote_stop.txtremote_dict.txt 渣男 渣女remote_stop.txt 分割3、配置文件中配置远程地址保存后重启一次es后续只要远程文件有改动词库会自动更新。4、验证添加远程词库前词库生效前‘渣男’、‘渣女’被单独拆分‘分割’也被识别为了词条。当检测到远程文件变动时es会重新加载文件控制台有日志打印生效后
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

链表进阶必刷:双指针、哑节点与环形链表入口推导全复盘 2026/9/29 16:12:06

链表进阶必刷:双指针、哑节点与环形链表入口推导全复盘

很多人刷链表题,最大的困惑不是写不出代码,而是写出来了却说不清楚"为什么这样写是对的"。代码随想录第四天这四道题——24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表II,刚好把…

阅读更多 →
Keil5与VSCode配置Arm Compiler 5.06独立安装指南 2026/9/29 16:11:59

Keil5与VSCode配置Arm Compiler 5.06独立安装指南

1. 为什么要把 Arm Compiler 5.06 单独拎出来装 搞嵌入式开发的朋友,尤其是玩 STM32 这一类 Arm Cortex-M 芯片的,大概率都经历过这样的场景:项目从同事或者网上拉下来,用 Keil5 一打开,点编译,直接弹出一堆…

阅读更多 →
Kafka KRaft架构深度解析:告别ZooKeeper的元数据革命 2026/9/29 16:11:59

Kafka KRaft架构深度解析:告别ZooKeeper的元数据革命

先说我自己的感受:我维护Kafka集群的时间不算短,但真正让我下决心研究KRaft的,是一次ZooKeeper集群抖动。当时Kafka本身很稳,可ZooKeeper三个节点之间的网络延时稍微变大,整个集群的元数据读写跟着卡顿,分区…

阅读更多 →
从内存加载DLL:绕过LoadLibrary的PE手动映射与重定位实战 2026/9/29 16:11:59

从内存加载DLL:绕过LoadLibrary的PE手动映射与重定位实战

简介:这是一份面向Windows逆向与安全开发学习者的内存加载DLL完整实现代码,解决的是如何绕过常规磁盘加载流程、直接从内存或资源中加载DLL并调用其导出函数的问题,适合具备一定C/C与PE结构基础的开发者研究。资源包共22个文件,约…

阅读更多 →
LeetCode普通数组题绝境求生:前缀和、双指针与原地变换实战手册 2026/9/29 16:11:59

LeetCode普通数组题绝境求生:前缀和、双指针与原地变换实战手册

刷LeetCode刷到第13天,打开题库里的“普通数组”分类,我当时的想法很天真——数组题嘛,无非就是遍历、排序、双指针,能难到哪去。结果当天第一道题就让我见识了什么叫绝境求生。注意这里说的不是题目有多难,而是它明明…

阅读更多 →
STM32CubeMX 6.14 从入门到实战:初始化代码配置与避坑指南 2026/9/29 16:11:59

STM32CubeMX 6.14 从入门到实战:初始化代码配置与避坑指南

1. 为什么我至今还在用 STM32CubeMX 做初始化代码搞 STM32 的人大概都经历过那个年代:想点亮一个 LED,得先翻几百页参考手册,把 RCC 时钟树一个分频器一个分频器地算,然后手动往寄存器里写RCC->CR | ...,写错一位就…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉