(七)安装中文分词组件

分词组件

elasticsearch提供了几个内置的分词器:standard analyzer(标准分词器)、simple analyzer(简单分词器)、whitespace analyzer(空格分词器)、language analyzer(语言分词器),而如果我们不指定分词器类型的话,elasticsearch默认是使用标准分词器的。那接下来我们先来看看这几种分词器的特点。
ps:我们可以通过分词器测试api来看看每个分词器的特点,语法为:

POST _analyze
{
  "analyzer": "分词器类型",
  "text": "我是一个中国人,张姓在中国是大姓。"
}

返回的结果就是我们使用该分词器给搜索关键词分词的结果。

标准分词器

测试标准分词器分词效果:


标准分词器

通过测试结果我们可以发现,使用标准分词器的分词结果,是去掉标点符号,然后一个一个字符来分词,这就是我们上一章提到的中文搜索的问题,这显然不是我们想要的分词效果。那我们接着看下一个分词器。

简单分词器

测试标准分词器分词效果:


简单分词器

通过上面的测试结果发现,简单分词器它是通过标点符号来分词的,如果我整个搜索关键词都没有标点符号,那么它就不能分词了,以搜索关键词原样输出,这种也不是我们想要的分词效果。

空格分词器

测试空格分词器分词效果:


空格分词器

通过测试我们发现,使用空格分词器对“我是一个中国人,张姓在中国是大姓。”搜索关键词分词,它给我们原样返回了,那顾名思义,空格分词器就是以空格来分词,而我们上面这条搜索关键词并没有空格,所以到时候这个搜索关键词就是最小的词元了。看到现在,好像上面几种分词器的分词结果都不是我们想要的。那我们接着来看最后一个分词器。

语言分词器

所谓的语言分词器,其实就是elasticsearch提供的世界流行语言分词器集合,它支持的人类语言有:阿拉伯语、亚美尼亚语、巴斯克语、巴西语、保加利亚语、加泰罗尼亚语、中文、捷克语、丹麦、荷兰语、英语、芬兰语、法语、加里西亚语、德语、希腊语、北印度语、匈牙利语、印度尼西亚、爱尔兰语、意大利语、日语、韩国语、库尔德语、挪威语、波斯语、葡萄牙语、罗马尼亚语、俄语、西班牙语、瑞典语、土耳其语和泰语。
我们可以看到中文也在它支持的范围内,那这样的话,如果我们使用语言分词器中的中文来对“我是一个中国人,张姓在中国是大姓。”关键词分词,那它的分词效果是如果呢?我们来看看:


中文语言分词器

我们通过上面的分词结果很遗憾的发现,即时我们使用了elasticsearch为我们提供的中文语言分词器来对中文分词,其效果也是不理想,因为从结果来看,它跟标准分词器是一样的,都是按每个中文字符来分词。
ps:语言分词器在使用的时候是要指定该语言的英文单词的,比如中文就是chinese,英文就是english,法语就是french,如此类推...我们可以来看看一段法语的分词测试:


法文语言解析器

上面的分词结果就是法文的分词结果,我想不懂法文的人都没办法确定该分词效果如何,但是至少可以确定法文的分词要比中文的分词效果要好,因为它能把语气词去掉,可能是因为中文太博大精深了,外国人学中文并不容易,所以当然做不好中文分词了。其他语言就不一一测试了,大家有兴趣可以自行测试看看效果。
以上就是elasticsearch为我们提供的内置的分词器,通过它们的分词特点发现,它们对中文的分词效果都不好,那这样的话,我们就得看看是否有第三方分词器了,如果有的话,那这个分词器一定是中国人开发的,因为只有中国人才更理解中文的博大精深。

安装中文分词插件

那既然elasticsearch内置的分词组件都不是我们想要的效果,那我们就使用第三方的中文分词插件吧,经过了解,第三方中文插件有一个比较知名的,中文分词的效果也很好,它就是IKAnalyzer,是一个叫medcl的中国人开发的,那我们就马上把它装上去看看分词效果吧。

下载IKAnalyzer插件

IKAanlyzer下载地址为https://github.com/medcl/elasticsearch-analysis-ik/releases

IKAnalyzer的版本会随着elasticsearch版本更新而更新,所以我们下载的版本最好与elasticsearch的版本一致,我们的elasticsearch的版本为6.2.4,所以我们IKAnalyzer也是下载6.2.4,并且我们要下载编译好的zip包,不要下载源码包,不然还得自己去编译,包的全名为elasticsearch-analysis-ik-6.2.4.zip。

安装IKAnalyzer

1、进入elasticsearch安装目录下的plugins目录,创建ik目录

$ cd /usr/local/elasticsearch/plugins
$ mkdir ik

2、上传IKAnalyzer包,并解压

$ unzip elasticsearch-analysis-ik-6.2.4.zip  #解压出来的目录叫elasticsearch
$ cd elasticsearch #进入刚刚解压出来的elasticsearch目录
$ cp -r ./* /usr/local/elasticsearch/plugins/ik/  #拷贝当前目录所有子目录和文件到elasticsearch的ik目录下

重启elasticsearch

注意不要使用后台运行的当时启动,因为待会需要看控制台打印信息

启动打印信息

看到elasticsearch启动打印信息有加载IK分词器相关的消息就代表插件已经安装上去了。

测试分词效果

那现在我们已经把IK分词器安装上去了,现在我们就来测试一下它的分词效果,IK分词器有两种分词效果,一种是ik_max_word(最大分词)和ik_smart(最小分词),我们分别用这两种分词来测试“中华人民共和国国歌”这个搜索关键词。
我们先来看看最大分词效果,ik_max_word:


最大分词效果

很明显,这次的分词效果要比前面的任何一种elasticsearch内置的分词效果都要好很多,是有中文语义的分词,我们在来看看最小分词的效果,ik_smart:


最小分词效果

最小分词就给我们把搜索关键词拆分成“中华人民公共国”和“国歌”这两个词元,从效果来看没有最大分词的效果好。我们再来看看使用IK分词对英文分词的支持如何:
使用IK分词器对英文分词

效果还是可以的,会去掉像“A”这样单独存在没有意义的词元,而且我发现,它跟elasticsearch内置的english语言分词器对英文分词效果是一样的。

那这样的话我们就确定了后面的分词器我们都IK分词器了,因为它对中文分词的效果正是我们想要的,而且它还对英文分词支持很好。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容

  • 本文是对ElasticSearch中文分词学习的一个知识总结,包括如下章节的内容: 基本概念 ik分词器的安装 i...
    我是老薛阅读 29,766评论 6 15
  • 包括内容: IK分词组件的添加和配置 索引建立及高亮搜索示例 添加自定义分词的测试 版本: ES - 2.4.5,...
    君剑阅读 8,662评论 0 0
  • Elasticsearch 中文搜索时遇到几个问题: 当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”...
    sudop阅读 67,387评论 5 42
  • 没错,这是关于房子的文章,个人观点,不做参考! 我们常说“安身立命”,安身才可以立命。我们国家也一直是一...
    我的梦都在故事里阅读 302评论 0 0
  • 后来历史上的人常常叫我“古今第一刺客”,真是搞笑,失败者还要分一二三吗? 名士、先贤、义士都是好词,都和我无关,刺...
    仓石阅读 155评论 0 0