1. 程式人生 > >Elasticsearch 5使用中文分詞

Elasticsearch 5使用中文分詞

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

使用中文分詞

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

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

預設分詞的標籤效果

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

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

IK Analysis 外掛

安裝 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
  • 1

下載解壓到指定目錄

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

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

K的安裝目錄

需要注意的是,不管是哪種安裝方式,相應的外掛,要對應相應的 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分詞的標籤效果

IK Analysis 型別

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

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

--------------------- 本文來自 _waylau 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/kkkloveyou/article/details/78210139?utm_source=copy