IK分词器
IK分词器
IK分词器是elasticsearch中最受欢迎的中文插件之一,它专门针对中文文本的处理进行了优化,解决了Elasticsearch默认分词器对中文支持不足的问题。
IK分词器是一款·开源的中文分词工具包,最初是由Luncene设计的,后来被集成到Elasticsearch中成为了插件,它基于java进行开发。
IK分词器的发展史:
-
最初以开源项目Luence为应用主体
-
3.0版本开始发展为面向java的分词组件。
-
2012版本实现了简单的分词歧义排除算法。
-
后被Elasticsearch开发工程师medcl集成到Elasticsearch中。
IK分词器的两种模式:
-
IK_smart模式:智能拆分,最粗粒度拆分。
-
最少切分,添加了歧义识别功能。
-
适合Phrase查询
-
Phrase查询(短语查询)是一种精确匹配连续词语顺序的搜索方式,要求文档中的字段必须按指定顺序包含完整的查询短语(包括词语顺序和位置)。
-
-
例如:"中华人民共和国国歌"会被拆分为"中华人民共和国,国歌‘’
-
-
IK_max_word模式:最细粒度划分
-
能切的词都会被切掉。
-
适合Term查询
-
Term查询是一种用于精确值匹配的基础查询,它直接搜索未经分词的字段原始值(即不经过分析器处理),适用于精确匹配关键字、数值、日期等。
-
-
例如:"中华人民共和国国歌"会被拆分为"中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌"
维度 最粗粒度拆分 最细粒度划分 分片大小 大(文档多) 小(文档少) 分片数量 少 多 扩展性 差(需重建索引) 好(动态分配) 查询性能 低(单分片压力大) 高(并行处理) 适用场景 小数据量、低负载 大数据量、高并发 其他重要特性:
-
支持自定义字典
-
高性能处理能力
-
多语言支持
-
拼音分词功能
在IK分词器的使用
# ik_smart 分词模式 GET _analyze {"analyzer": "ik_smart","text": "苦海无涯,回头是岸" } # ik_max_word 分词模式 GET _analyze {"analyzer": "ik_max_word","text": "苦海无涯,回头是岸" }
总结:IK分词器作为Elasticsearch中最受欢迎的中文分词,凭借其高效的分词算法、灵活的配置方式和良好的性能,成为处理中文搜索场景的首选工具。在面试中,面试官通常会围绕IK分词器的基本概念、两种分词模式的区别、安装配置方法以及实际应用场景等方面提问。
-