一,lk分词器概述
1.1 IK分词器简介
IKAnalyzer 是一个开源的,基于 Java 语言开发的轻量级的中文分词工具包,从 2006 年 12 月推出 1.0 版开始,IKAnalyzer 已经推出了 3 个大版本。最初,它是以开源项目 Lucene 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的 IKAnalyzer3.0 则发展为面向 Java 的公用分词组件,独立与 Lucene 项目,同时提供了对 Lucene 的默认优化实现
1.2 Ik分词器特性
采用了特有的”正向迭代最细粒度切分算法“,具有 60 万字/秒的高速处理能力。
采用了多子处理器分析模式,支持:英文字母(IP 地址、Email、URL)、数字(日期、常用中文数量词、罗马数字、科学计数法)、中文词汇(姓名、地名)等分词处理。
对中英联合支持不是很好,在这方面的处理比较麻烦,需再做一次查询,同时是支持个人词条的优化的词典存储,更小的内存占用。
支持用户词典扩展定义。
针对 Lucene 全文检索优化的查询分析器 IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高 Lucene 检索的命中率。
1.3 中文分词配置
# 配置前提条件
1.所有的ES节点都需要安装
2.所有的ES都需要重启才能生效
3.中文分词器的版本号要和ES的版本号对应
# 配置中文分词器
1.第一步:下载安装分词器
在线安装
cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
本地安装
elasticsearch-analysis-ik-6.6.0.zip
/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///data/soft/elasticsearch-analysis-ik-6.6.0.zip
1.2 所有节点重启
systemctl restart elasticsearch.service
二,中文分词器的使用
1 创建索引
PUT /news2
2 创建模板
POST /news2/text/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word", #存储数据分词时使用最细分词粒度
"search_analyzer": "ik_smart" #查询数据分词时使用最粗分词粒度
}
}
}
3 插入数据
POST /news2/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}
POST /news2/text/2
{"content":"*部:各地校车将享最高路权"}
POST /news2/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
POST /news2/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
4 查询数据
POST /news2/_search
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}