es 中文分词器IK

一,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" : {}
        }
    }
}

三,热更新中文分词库

上一篇:elastic search配置ik分词及pinyin分词使搜索同时支持中文和拼音搜索


下一篇:Elasticsearch----IK分词器的安装及简单演示