Elasticsearch IK 分词器自定义词典——扩展词、停用词、热更新、同义词
IK 分词器默认的词库是通用的但每个项目都有自己的专有名词——小红书里显眼包“多巴胺穿搭”电商里充氮气独立包装——这些词 IK 默认会把它们切成一堆碎词搜索体验很差。这篇文章覆盖 IK 分词器的四种自定义配置扩展词词典让 IK 认识你的专有名词、停用词词典过滤掉无意义的词、MySQL 热更新词典改词库不用重启 ES、同义词词典搜笔记本也召回笔记本电脑。为什么默认词库不够用默认分词多巴胺穿搭 → [多巴胺, 穿搭] ← 能分出来 显眼包 → [显, 眼, 包] ← 拆碎了搜显眼包召回不准 充氮气独立包装 → [充, 氮气, 独立, 包装] ← 充氮气应该是一个词专有名词被拆碎了之后倒排索引里没有完整的 term搜显眼包召回不到。需要让 IK 知道显眼包’是一个完整的词别拆。找到 IK 配置目录Docker 部署的 ESIK 配置路径在/usr/share/elasticsearch/plugins/ik/config/ ├── IKAnalyzer.cfg.xml ← 主配置文件所有词典入口 ├── main.dic ← IK 自带扩展词库 ├── stopword.dic ← IK 自带停用词库 └── ...拼音、繁体等可选模块建议把目录挂出来方便改dockerrun-d\--namees\-p9200:9200\-v./es-plugins/ik:/usr/share/elasticsearch/plugins/ik\elasticsearch:8.15.0改完重启容器生效。下面所有的.dic文件都放在这个config/目录下和IKAnalyzer.cfg.xml同级。完整配置一览先把IKAnalyzer.cfg.xml的最终形态放这里——四种词典的入口都在这一处。后面每个小节分别讲对应文件怎么写。?xml version1.0 encodingUTF-8?!DOCTYPEpropertiesSYSTEMhttp://java.sun.com/dtd/properties.dtdpropertiescommentIK Analyzer 扩展配置/comment!-- 扩展词词典本地文件改完重启 ES --entrykeyext_dictmy_ext.dic/entry!-- 停用词词典本地文件改完重启 ES --entrykeyext_stopwordsmy_stop.dic/entry!-- 扩展词热更新MySQL不重启 --entrykeyremote_ext_dictjdbc:mysql://host.docker.internal:3306/ik?useSSLfalseamp;serverTimezoneAsia/Shanghai/entryentrykeyremote_ext_dict_tableik_ext_dict/entryentrykeyremote_ext_dict_columnword/entry!-- 停用词热更新MySQL不重启 --entrykeyremote_ext_stopwordsjdbc:mysql://host.docker.internal:3306/ik?useSSLfalseamp;serverTimezoneAsia/Shanghai/entryentrykeyremote_ext_stopwords_tableik_stop_dict/entryentrykeyremote_ext_stopwords_columnword/entry!-- 统一刷新间隔秒 --entrykeyremote_ext_dict_interval60/entry/propertiesentry干什么更新方式ext_dict扩展词专有名词改.dic文件 → 重启 ESext_stopwords停用词无意义词改.dic文件 → 重启 ESremote_ext_dict扩展词热更新改 MySQL → 等 60s 自动生效remote_ext_stopwords停用词热更新改 MySQL → 等 60s 自动生效remote_ext_dict_interval刷新间隔默认 60 秒1 扩展词词典——让 IK 认识你的专有名词在config/下新建my_ext.dic一行一个词# my_ext.dic 显眼包 多巴胺穿搭 充氮气 程一口 独立包装重启 ES 后验证curl-XPOSThttp://localhost:9200/_analyze\-HContent-Type: application/json\-d{ analyzer: ik_max_word, text: 充氮气独立包装 }# 返回[充氮气, 独立, 包装]# 充氮气 被保留成完整词了 ✅2 停用词词典——过滤掉无意义的词在config/下新建my_stop.dic# my_stop.dic 的 了 是 在 和 也 就 都 吗 呢 吧重启 ES 后验证curl-XPOSThttp://localhost:9200/_analyze\-HContent-Type: application/json\-d{ analyzer: ik_max_word, text: 今天天气太热了 }# 了 被过滤掉了 ✅3 MySQL 热更新——改词库不用重启 ES重启一次几分钟词库经常变的话吃不消。IK 1.10.0 支持 MySQL 热更新启动时加载之后每隔 60 秒去查一次有新词自动加载到内存。建表CREATEDATABASEik;USEik;-- 扩展词表CREATETABLEik_ext_dict(idBIGINTAUTO_INCREMENTPRIMARYKEY,wordVARCHAR(255)NOTNULLCOMMENT扩展词,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP);INSERTINTOik_ext_dict(word)VALUES(显眼包),(多巴胺穿搭),(程一口);-- 停用词表CREATETABLEik_stop_dict(idBIGINTAUTO_INCREMENTPRIMARYKEY,wordVARCHAR(255)NOTNULLCOMMENT停用词,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP);INSERTINTOik_stop_dict(word)VALUES(的),(了),(呢),(吧);放 MySQL 驱动# 下载 mysql-connector-j放到 plugins/ik/ 目录下和 IK 的 jar 同级cpmysql-connector-j-9.2.0.jar ./es-plugins/ik/配置项说明配置含义remote_ext_dictJDBC 连接串用户名密码用userrootpasswordxxx拼在 URL 里remote_ext_dict_table扩展词表名remote_ext_dict_column扩展词所在的列名remote_ext_stopwords停用词 JDBC 连接串remote_ext_stopwords_table停用词表名remote_ext_stopwords_column停用词所在的列名remote_ext_dict_interval刷新间隔秒用户名密码写 JDBC URL 里jdbc:mysql://host:3306/ik?userrootpassword123456useSSLfalse重启 ES 后往 MySQL INSERT 一条新词等 60 秒验证INSERT INTO ik_ext_dict(word)VALUES(新测试词);# 等 60 秒后curl-XPOSThttp://localhost:9200/_analyze\-HContent-Type: application/json\-d{ analyzer: ik_max_word, text: 新测试词在这里 }# 新测试词 被完整保留 → 热更新生效 ✅4 同义词词典——搜笔记本也召回笔记本电脑同义词不归 IK 管属于 ES 的synonymtoken filter。新建同义词文件synonyms.txt放在 ES 的config/目录下/usr/share/elasticsearch/config/不是 IK 的 config一行一组笔记本, 笔记本电脑, laptop 显眼包, 显眼, 显眼精 充氮气, 氮气填充创建 Index 时配上同义词 filterPUT/articles{settings:{analysis:{filter:{my_synonym_filter:{type:synonym,synonyms_path:analysis/synonyms.txt}},analyzer:{ik_synonym_smart:{tokenizer:ik_smart,filter:[my_synonym_filter]},ik_synonym_max_word:{type:custom,tokenizer:ik_max_word,filter:[my_synonym_filter]}}}},mappings:{properties:{content:{type:text,analyzer:ik_synonym}}}}搜笔记本时ES 自动把笔记本电脑也加入查询多种说法都能召回。同义词文件更新后新写入的数据立即生效已有数据需要 reindex 重建索引。

相关新闻

卡美德生物科普 RHD(Rh血型D抗原):分子结构、表达特征与生物学功能探究

卡美德生物科普 RHD(Rh血型D抗原):分子结构、表达特征与生物学功能探究

RHD基因编码的RhD抗原,是人类血型系统中极具代表性的膜蛋白分子,也是输血医学、细胞生物学及遗传学研究中的经典核心靶点。该靶点依托独特的跨膜结构,稳定表达于特定血细胞表面,不仅是血型分型的核心标志物,还参与机体…

2026/7/20 21:49:02阅读更多 →
卡美德生物科普 RGMA( repulsive guidance molecule A):分子特征、表达特性与生物学功能研究

卡美德生物科普 RGMA( repulsive guidance molecule A):分子特征、表达特性与生物学功能研究

RGMA,全称排斥性导向分子A,是排斥性导向分子家族的关键分泌型糖蛋白。该靶点在生物体内的信号调控、细胞生长、组织形态构建等过程中扮演着重要角色,是发育生物学、细胞生物学领域重点研究的经典分子靶点。RGMA凭借独特的分子互作机制&#x…

2026/7/20 21:49:02阅读更多 →
NTC、TEC、RTC——容易搞混的三个缩写

NTC、TEC、RTC——容易搞混的三个缩写

一句话: 三个东西缩写只差一个字母但功能完全无关——NTC 测温、TEC 制冷、RTC 记时间。本文用一张表讲清楚。适合谁读:被这三个缩写绕晕的嵌入式初学者。一张表分清楚 NTCTECRTC全称Negative Temperature CoefficientThermo Electric CoolerReal Time Clock做什么测…

2026/7/21 23:34:51阅读更多 →
Java性能调优:JDK诊断工具实战指南

Java性能调优:JDK诊断工具实战指南

1. JDK诊断工具全景概览作为Java开发者最亲密的战友,JDK内置的诊断工具链是我们排查线上问题的瑞士军刀。这套工具诞生于JDK早期版本,经过20余年的迭代已经形成了完整的监控-诊断-分析体系。我曾在一次生产环境FullGC频繁的紧急排查中,仅用js…

2026/7/21 23:43:12阅读更多 →
Triton+KServe构建高可用机器学习服务的生产实践

Triton+KServe构建高可用机器学习服务的生产实践

1. 项目概述:当模型走出Jupyter,真正开始呼吸真实世界的空气“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题本身就像一句暗号,专为那些在Jupyter里调通了模型、画出了漂亮ROC曲线、却在部署时被现实狠…

2026/7/21 23:43:12阅读更多 →
【愚公系列】《Android应用案例开发大全》001-初识庐山真面目Android简介

【愚公系列】《Android应用案例开发大全》001-初识庐山真面目Android简介

💎【行业认证权威头衔】 ✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…

2026/7/21 23:43:12阅读更多 →
深入解析HRPWM高分辨率PWM技术:原理、配置与Buck变换器、PWM DAC实战

深入解析HRPWM高分辨率PWM技术:原理、配置与Buck变换器、PWM DAC实战

1. 项目概述:为什么我们需要HRPWM? 在数字电源和电机驱动的世界里,PWM(脉宽调制)信号的精度直接决定了系统的性能天花板。传统的PWM,其时间分辨率被系统时钟周期(TBCLK)所限制。举个…

2026/7/21 23:43:12阅读更多 →
Claude Code AI编程助手实战避坑指南:7大关键陷阱与解决方案

Claude Code AI编程助手实战避坑指南:7大关键陷阱与解决方案

Claude Code 作为一款备受关注的 AI 编程助手,其庞大的教程体系(如 52 万字教程)背后,隐藏着许多新手甚至有一定经验的开发者容易忽视的实践陷阱。这篇文章不打算复述那些冗长的入门步骤,而是直接切入核心:…

2026/7/21 23:43:11阅读更多 →
排列三玩法解析与166期号码分析

排列三玩法解析与166期号码分析

1. 体彩排列三玩法基础解析排列三作为中国体育彩票的经典数字型玩法,其核心规则是从000-999中选择一个三位数作为投注号码。每期开奖时,从0-9共10个号码球中按顺序摇出3个号码作为开奖号码。玩家需要准确预测开奖号码的顺序和组合才能中奖。排列三的主要…

2026/7/21 23:41:11阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →