<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>分词 on 极限科技 | INFINI Labs</title><link>https://infinilabs.cn/tags/%E5%88%86%E8%AF%8D/</link><description>Recent content in 分词 on 极限科技 | INFINI Labs</description><generator>Hugo -- gohugo.io</generator><lastBuildDate>Tue, 28 Apr 2026 20:00:00 +0800</lastBuildDate><atom:link href="https://infinilabs.cn/tags/%E5%88%86%E8%AF%8D/index.xml" rel="self" type="application/rss+xml"/><item><title>Easysearch analysis-ik 多词典性能优化：从性能回退到分词性能提升 25%~30%</title><link>https://infinilabs.cn/blog/2026/easysearch-analysis-ik-multidict-performance-recovery-vs-elasticsearch/</link><pubDate>Tue, 28 Apr 2026 20:00:00 +0800</pubDate><guid>https://infinilabs.cn/blog/2026/easysearch-analysis-ik-multidict-performance-recovery-vs-elasticsearch/</guid><description>Easysearch 版 analysis-ik 相比开源 IK 有一个重要的增强：支持多词典。简单说就是不同字段可以挂不同词库，可以叠加默认词典，也可以只用自定义词典。这是开源单词典 IK 做不到的。
功能实现初期，主要精力放在把能力跑通上。但在后来的一次写入压测中，我们发现 Easysearch 的写入吞吐和 Elasticsearch 有明显差距，最终定位到问题出在多词典的实现方式上——字段最终该用哪套词典，本来应该在分词前就算好，结果代码里把这个选择丢进了分词的热路径，每次分词都要反复切词典、重复扫同一段文本。
这篇文章记录的就是我们怎么一步步把性能拉回来、最终反超基线的过程。
问题怎么冒出来的 # 4 月 20 号，我们跑了一轮系统级写入压测。数据、mapping、settings、并发和 bulk 参数都一样，Elasticsearch 8.19.5 和 Easysearch 2.1.2 的写入吞吐差距大得有点不对劲：
时间 场景 Elasticsearch Easysearch 说明 2026-04-20 第 2 次有效重跑 29900 docs / bulk=250 / concurrency=3 端到端写入压测 129.44 docs/s 31.21 docs/s 这是整条写入链路的 docs/s，不是单独分词吞吐 2026-04-20 诊断样本 5000 docs / bulk=250 / concurrency=3 156.25 docs/s 30.</description></item></channel></rss>