歡迎光臨
每天分享高質量文章

Elasticsearch 使用中文分詞

(點擊上方公眾號,可快速關註)


來源:Way Lau ,

waylau.com/elasticsearch-use-ik-analysis/

本文演示瞭如何使用IK Analysis 插件來實現在 Elasticsearch 中的中文分詞功能。

使用中文分詞

在“Spring Boot應用企業級博客系統”課程中(http://coding.imooc.com/class/125.html),所有的博客功能都已經完成了。讀者朋友們開始愉快地使用博客來發表博客了。但如果朋友們足夠細心的話,發現在輸入中文的標簽的時候,存在一定的問題。

比如,當我們想將某個博客標記為“大神”時,博客系統卻將這個單詞粗暴的分成瞭如圖21-2所示的兩個詞“大”和“神”。顯然,這並不符合用戶的使用習慣。

這是 Elasticsearch 語言分析器上的限制,它並不能友好的處理所有語言,特別是中文。這種情況下,我們就需要額外的中文分詞器來協助我們了。

本章節,我們將演示使用 IK Analysis 插件來幫助我們實現中文分詞。

IK Analysis 插件

IK Analysis 插件(https://github.com/medcl/elasticsearch-analysis-ik/)就是一款專門用於 Elasticsearch 的分詞器,可以友好的處理中文。

IK Analysis 插件將 Lucene IK 分析儀(http://code.google.com/p/ik-analyzer/)集成到了 Elasticsearch 中,從而支持自定義分詞。

安裝 IK Analysis

安裝 IK Analysis 非常簡單。主要有兩種方式。

使用 elasticsearch-plugin

如果 Elasticsearch 是 5.5.1 以後的版本,可以使用 elasticsearch-plugin 來安裝,安裝方式如下:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip

下載解壓到指定目錄

另外一種方式是,下載安裝包,解壓到 Elasticsearch 安裝目錄的 /plugins/目錄下即可。

下圖展示了 IK 的安裝目錄。

需要註意的是,不管是哪種安裝方式,相應的插件,要對應相應的 Elasticsearch 版本,否則可能會安裝不成功。 下載地址為 https://github.com/medcl/elasticsearch-analysis-ik/releases。本章節,我們使用 IK Analysis for Elasticsearch 5.5.0 版本。

使用 IK Analysis

要使用 IK Analysis,需要在文件類裡面,指定相應的分詞器。我們在 EsBlog 的 tags 屬性上,添加了searchAnalyzer = “ik_smart”, analyzer = “ik_smart”的註解內容就可以了。

public class EsBlog implements Serializable {

  

    …

 

    @Field(type = FieldType.text,fielddata = true, searchAnalyzer = “ik_smart”, analyzer = “ik_smart”) 

    private String tags;  // 標簽

下圖展示了使用了IK分詞的標簽效果

IK Analysis 型別

ik_smart 是 IK Analysis 其中一種分詞形式。IK Analysis主要有兩種型別的分詞形式,分別是 ik_max_word 和 ik_smart。

  • ik_max_word: 會將文本做最細粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國”、“中華人民”、“中華”、“華人”、“人民共和國”、“人民”、“人”、“民”,、“共和國”、“共和”、“和”、“國歌”等,會窮盡各種可能的組合;

  • ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國”、“國歌”。

參考

  • https://waylau.com/spring-boot-blog-video-release/

  • http://coding.imooc.com/class/125.html

看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,看技術乾貨

赞(0)

分享創造快樂