<meta charset="utf-8">
30_彻底掌握IK中文分词_上机动手实战IK分词器的安装和使用
中国人,其实我们用来进行搜索的,绝大多数,都是中文应用,很少做英文的
standard:没有办法对中文进行合理分词的,只是将每个中文字符一个一个的切割开来,比如说中国人 --> 中 国 人
英语的也要学:所以说,我们利用核心知识篇的相关的知识,来把es这种英文原生的搜索引擎,先学一下; 因为有些知识点,可能用英文讲更靠谱,因为比如说analyzed,palyed,students --> stemmer,analyze,play,student。有些知识点,仅仅适用于英文,不太适用于中文
从这一讲开始,大家就会觉得很爽,因为全部都是我们熟悉的中文了,没有英文了,高阶知识点,搜索,聚合,全部是中文了
在搜索引擎领域,比较成熟和流行的,就是ik分词器
中国人很喜欢吃油条
standard:中 国 人 很 喜 欢 吃 油 条
ik:中国人 很 喜欢 吃 油条
1、在elasticsearch中安装ik中文分词器
(1)git clone https://github.com/medcl/elasticsearch-analysis-ik
(2)git checkout tags/v5.2.0
(3)mvn package
(4)将target/releases/elasticsearch-analysis-ik-5.2.0.zip拷贝到es/plugins/ik目录下
(5)在es/plugins/ik下对elasticsearch-analysis-ik-5.2.0.zip进行解压缩
(6)重启es
2、ik分词器基础知识
两种analyzer,你根据自己的需要自己选吧,但是一般是选用ik_max_word
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
共和国 --> 中华人民共和国和国歌,搜到吗????
3、ik分词器的使用
PUT /my_index { "mappings": { "my_type": { "properties": { "text": { "type": "text", "analyzer": "ik_max_word" } } } } }
POST /my_index/my_type/_bulk { "index": { "_id": "1"} } { "text": "男子偷上万元发红包求交女友 被抓获时仍然单身" } { "index": { "_id": "2"} } { "text": "16岁少女为结婚“变”22岁 7年后想离婚被法院拒绝" } { "index": { "_id": "3"} } { "text": "深圳女孩骑车逆行撞奔驰 遭索赔被吓哭(图)" } { "index": { "_id": "4"} } { "text": "女人对护肤品比对男票好?网友神怼" } { "index": { "_id": "5"} } { "text": "为什么国内的街道招牌用的都是红黄配?" }
查看分词效果
GET /my_index/_analyze { "text": "男子偷上万元发红包求交女友 被抓获时仍然单身", "analyzer": "ik_max_word" }
GET /my_index/my_type/_search { "query": { "match": { "text": "16岁少女结婚好还是单身好?" } } }