1. Doris 的 unicode
分词器
特点:
按字符分词:将文本按 Unicode 字符逐个切分(例如中文按单字、英文按字母),适合多语言混合或小语种场景。
简单通用:无需依赖词典或复杂规则,直接按字符拆分。
支持特殊格式:对邮箱、IP、数字字母混合文本有较好的处理能力。
优势:
多语言友好:对小语种(如阿拉伯语、泰语、梵文)和混合语言文本(中英日韩混合)支持良好。
轻量级:无需额外配置词典,适合简单分词需求。
存储紧凑:适用于 OLAP 场景,结合 Doris 的列式存储,适合高效聚合查询。
局限性:
语义缺失:无法按词语切分(例如中文“北京”会被拆分为“北”和“京”),可能影响搜索相关性。
无高级功能:不支持词干提取(如英文复数转单数)、同义词扩展、停用词过滤等。
性能代价:按字符切分可能生成大量分词,影响索引和查询性能。
2. Elasticsearch 的分词器
特点:
灵活多样:提供丰富的分词器(如
standard
、ik
、icu
、ngram
等)和插件机制。语义支持:支持按词语切分(如中文分词器
ik
)、词干提取、同义词扩展、停用词过滤等。定制化强:可通过配置规则、词典或自定义插件实现复杂分词逻辑。
优势:
高相关性:支持语义分词(如中文按词切分),提升搜索准确率。
高级功能:支持词干提取(如英文 "running" → "run")、同义词扩展(如 "手机" → "电话")等。
多场景适配:针对不同语言(如中文、日文、韩文)有专用分词器(如
ik
、kuromoji
、nori
)。
局限性:
配置复杂:需根据语言选择合适的分词器,并可能需要维护词典。
资源消耗:复杂分词逻辑可能增加索引和查询的延迟。
小语种支持有限:对小语种需依赖通用分词器(如
icu
),效果可能不如 Doris 的字符级切分。
对比总结
多语言混合/小语种 | ✅ 按字符切分,天然支持,分词效果一般 | ✅ 不同的语种依赖特定分词器(如 ru ),不是原生支持的语种需要额外的配置和词典维护 |
中文语义分词 | ❌ 仅支持单字切分 | ✅ 专用分词器(如 ik )支持按词切分 |
高级功能 | ❌ 不支持词干提取、同义词等 | ✅ 支持丰富的高级功能 |
配置复杂度 | ✅ 无需配置,开箱即用 | ❌ 需根据语言选择分词器并维护词典 |
性能与存储 | ✅ 轻量级,适合 OLAP 场景 | ❌ 复杂分词可能增加资源消耗 |
Doris分词示例:
示例一 中文分词:
|
示例二 英文分词:
|
示例三 混合分词:
|
分词结果比较:
|
结论
如果需求是简单的多语言混合分词或小语种支持:Doris 的
unicode
分词器更轻量、直接。如果需要语义分词或高级搜索功能:Elasticsearch 的分词器效果更好。