集成IK分词器

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
IK分词器3.0的特性如下:
1)采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
2)采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
3)支持个人词条的优化的词典存储,更小的内存占用。
4)支持用户词典扩展定义。
5)针对Lucene全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

下载地址

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.3.0

安装方式一

在elasticsearch的bin目录下执行以下命令,es插件管理器会自动帮我们安装,然后等待安装完成

/usr/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis- ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip

下载完成后会提示 Continue with installation?输入 y 即可完成安装
重启Elasticsearch 和Kibana

安装方式二

在elasticsearch安装目录的plugins目录下新建 analysis-ik 目录

新建analysis-ik文件夹

mkdir analysis-ik

切换至 analysis-ik文件夹下

cd analysis-ik

上传资料中的 elasticsearch-analysis-ik-7.3.0.zip

解压

unzip elasticsearch-analysis-ik-7.3.3.zip

解压完成后删除zip

rm -rf elasticsearch-analysis-ik-7.3.0.zip

重启Elasticsearch 和Kibana

分词模式

ik_max_word (常用)

会将文本做最细粒度的拆分

ik_smart

会做最粗粒度的拆分

扩展词典使用

扩展词:就是不想让哪些词被分开,让他们分成一个词。比如上面的江大桥

自定义扩展词库

  1. 进入到 confifig/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/confifig(安装包安装方式) 目录

下, 新增自定义词典

vim lagou_ext_dict.dic

输入 :江大桥

vim IKAnalyzer.cfg.xml

  1. 将我们自定义的扩展词典文件添加到IKAnalyzer.cfg.xml配置中

    <?xml version=”1.0” encoding=”UTF-8”?> <!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd">

    IK Analyzer 扩展配置 lagou_ext_dict.dic lagou_stop_dict.dic
  2. 重启Elasticsearch

    停用词典使用

    停用词
    有些词在文本中出现的频率非常高。但对本文的语义产生不了多大的影响。例如英文的a、an、the、of等。或中文的”的、了、呢等”。这样的词称为停用词。停用词经常被过滤掉,不会被进行索引。在检索的过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。停用词可以加快索引的速度,减少索引库文件的大小。
    自定义停用词库

  3. 进入到 confifig/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/confifig(安装包安装方式) 目录

下, 新增自定义词典

vim lagou_stop_dict.dic

输入

的 了 啊

  1. 将我们自定义的停用词典文件添加到IKAnalyzer.cfg.xml配置中
  2. 重启Elasticsearch

    同义词典使用

    语言博大精深,有很多相同意思的词,我们称之为同义词,比如“番茄”和“西红柿”,“馒头”和“馍”等。在搜索的时候,我们输入的可能是“番茄”,但是应该把含有“西红柿”的数据一起查询出来,这种情况叫做同义词查询。
    注意:扩展词和停用词是在索引的时候使用,而同义词是检索时候使用。
    配置IK同义词
    Elasticsearch 自带一个名为 synonym 的同义词 fifilter。为了能让 IK 和 synonym 同时工作,我们需要
    定义新的 analyzer,用 IK 做 tokenizer,synonym 做 fifilter。听上去很复杂,实际上要做的只是加一段配置。

  3. 创建/confifig/analysis-ik/synonym.txt 文件,输入一些同义词并存为 utf-8 格式。例如

    lagou,拉勾 china,中国

  4. 创建索引时,使用同义词配置,示例模板如下

    PUT /索引名称 {

“settings”: {

“analysis”: {

“filter”: {

“word_sync”: {

“type”: “synonym”,

“synonyms_path”: “analysis-ik/synonym.txt”

}

},

“analyzer”: {

“ik_sync_max_word”: {

“filter”: [

“word_sync”

],

“type”: “custom”,

“tokenizer”: “ik_max_word”

},”ik_sync_smart”: {

“filter”: [

“word_sync”

],

“type”: “custom”,

“tokenizer”: “ik_smart”

}

}

}

},

“mappings”: {

“properties”: {

“字段名”: {

“type”: “字段类型”,

“analyzer”: “ik_sync_smart”,

“search_analyzer”: “ik_sync_smart”

}

}

}

}