中文没有天然空格边界,默认规则往往不能表达品牌、型号和业务短语。正确做法不是先安装某个插件,而是先建立分析回归集,再比较内置分析器、插件分词、词典和同义词方案。
Table of contents
Open Table of contents
从期望 token 开始
为真实查询写期望,例如“苹果手机壳”可能需要 [苹果, 手机壳],而不是单字或 [苹果手机, 壳]。使用 _analyze API同时验证索引分析器和搜索分析器:
POST products/_analyze
{
"analyzer": "product_search",
"text": ["Java架构师", "苹果手机壳", "iPhone 17 Pro"]
}
词典越大不一定越好。过度切分提高召回但增加噪声,切分过粗则漏召回。评测必须落到 Top-K 相关性,而不是只比较 token 是否“看起来合理”。
实验室为了展示倒排过程,中文采用单字切分:
mvn -Dtest=SearchArchitectureTest#invertedIndexFindsDocumentsAndFilterDoesNotChangeScore test
源码明确标注它不适合生产;正式实现应通过当前 Elasticsearch 与插件兼容矩阵选择版本。
同义词放在搜索时
“笔记本, laptop”和“退款 => 售后退款”表达不同规则。多词同义词通常使用 synonym_graph,并放在搜索分析器中,便于更新且无需重建全部文档。索引时展开同义词会固化旧规则并增加词项。
Elastic 同义词文档支持通过同义词集合管理规则。上线前验证规则解析错误、循环映射、大小写、停用词顺序和零结果率;变更要有版本、审核和回滚。
中文检索还需要什么
拼音、前缀、纠错和同义词是不同能力,分别评测。品牌型号字段可同时保留 keyword 与标准化子字段;自动补全使用专门字段,避免在正文上执行前导通配符。敏感词和访问权限必须在检索前过滤,不能只在页面隐藏。
下一步
继续阅读09-10 高可用集群、容量规划与性能调优,计算分片、堆、磁盘和恢复预算。