技術(shù)學(xué)習(xí)視頻教程網(wǎng)盤(pán)資源整理 https://pan.baidu.com/s/13dbR69NLIEyP1tQyRTl4xw
之前我們創(chuàng)建索引,查詢(xún)數(shù)據(jù),都是使用的默認(rèn)的分詞器,分詞效果不太理想,會(huì)把text的字段分成一個(gè)一個(gè)漢字,然后搜索的時(shí)候也會(huì)把搜索的句子進(jìn)行分詞,所以這里就需要更加智能的分詞器IK分詞器了。
第一: 下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases ,這里你需要根據(jù)你的Es的版本來(lái)下載對(duì)應(yīng)版本的IK,這里我使用的是6.3.2的ES,所以就下載ik-6.3.2.zip的文件。
第二: 解壓-->將文件復(fù)制到 es的安裝目錄/plugin/ik下面即可,完成之后效果如下:
到這里已經(jīng)完成了,不需要去elasticSearch的 elasticsearch.yml 文件去配置。
第三:重啟ElasticSearch
第四:測(cè)試效果
未使用ik分詞器的時(shí)候測(cè)試分詞效果:
POST book/_analyze{ "text": "我是中國(guó)人"}//結(jié)果是:{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "<IDEOGRAPHIC>", "position": 0 }, { "token": "是", "start_offset": 1, "end_offset": 2, "type": "<IDEOGRAPHIC>", "position": 1 }, { "token": "中", "start_offset": 2, "end_offset": 3, "type": "<IDEOGRAPHIC>", "position": 2 }, { "token": "國(guó)", "start_offset": 3, "end_offset": 4, "type": "<IDEOGRAPHIC>", "position": 3 }, { "token": "人", "start_offset": 4, "end_offset": 5, "type": "<IDEOGRAPHIC>", "position": 4 } ]}
使用IK分詞器之后,結(jié)果如下:
POST book_v6/_analyze{ "analyzer": "ik_max_word", "text": "我是中國(guó)人"}//結(jié)果如下:{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "是", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR", "position": 1 }, { "token": "中國(guó)人", "start_offset": 2, "end_offset": 5, "type": "CN_WORD", "position": 2 }, { "token": "中國(guó)", "start_offset": 2, "end_offset": 4, "type": "CN_WORD", "position": 3 }, { "token": "國(guó)人", "start_offset": 3, "end_offset": 5, "type": "CN_WORD", "position": 4 } ]}
對(duì)于上面兩個(gè)分詞效果的解釋?zhuān)?/p>
1. 如果未安裝ik分詞器,那么,你如果寫(xiě) "analyzer": "ik_max_word",那么程序就會(huì)報(bào)錯(cuò),因?yàn)槟銢](méi)有安裝ik分詞器
2. 如果你安裝了ik分詞器之后,你不指定分詞器,不加上 "analyzer": "ik_max_word" 這句話(huà),那么其分詞效果跟你沒(méi)有安裝ik分詞器是一致的,也是分詞成每個(gè)漢字。
索引創(chuàng)建之后就可以使用ik進(jìn)行分詞了,當(dāng)你使用ES搜索的時(shí)候也會(huì)使用ik對(duì)搜索語(yǔ)句進(jìn)行分詞,進(jìn)行匹配。
PUT book_v5{ "settings":{ "number_of_shards": "6", "number_of_replicas": "1", //指定分詞器 "analysis":{ "analyzer":{ "ik":{ "tokenizer":"ik_max_word" } } } }, "mappings":{ "novel":{ "properties":{ "author":{ "type":"text" }, "wordCount":{ "type":"integer" }, "publishDate":{ "type":"date", "format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd" }, "briefIntroduction":{ "type":"text" }, "bookName":{ "type":"text" } } } }}
關(guān)于ik分詞器的分詞類(lèi)型(可以根據(jù)需求進(jìn)行選擇):
ik_max_word:會(huì)將文本做最細(xì)粒度的拆分,比如會(huì)將“中華人民共和國(guó)國(guó)歌”拆分為“中華人民共和國(guó),中華人民,中華,華人,人民共和國(guó),人民,人,民,共和國(guó),共和,和,國(guó)國(guó),國(guó)歌”,會(huì)窮盡各種可能的組合;
ik_smart:會(huì)做最粗粒度的拆分,比如會(huì)將“中華人民共和國(guó)國(guó)歌”拆分為“中華人民共和國(guó),國(guó)歌”。如下:
POST book_v6/_analyze{ "analyzer": "ik_smart", "text": "我是中國(guó)人"}//結(jié)果{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "是", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR", "position": 1 }, { "token": "中國(guó)人", "start_offset": 2, "end_offset": 5, "type": "CN_WORD", "position": 2 } ]}
聯(lián)系客服