Es學習第五課, 分詞器介紹和中文分詞器配置
阿新 • • 發佈:2018-11-12
上課我們介紹了倒排索引,在裡面提到了分詞的概念,分詞器就是用來分詞的。
分詞器是ES中專門處理分詞的元件,英文為Analyzer,定義為:從一串文字中切分出一個一個的詞條,並對每個詞條進行標準化。它由三部分組成,
- Character Filters:分詞之前進行預處理,比如去除html標籤
- Tokenizer:將原始文字按照一定規則切分為單詞
- Token Filters:針對Tokenizer處理的單詞進行再加工,比如轉小寫、刪除或增新等處理,也就是標準化
預定義的分詞器
ES自帶的分詞器有如下:
- Standard Analyzer
- 預設分詞器
- 按詞切分,支援多語言
- 小寫處理
- 支援中文采用的方法為單字切分
- Simple Analyzer
- 按照非字母切分
- 小寫處理
- Whitespace Analyzer
- 空白字元作為分隔符
- Stop Analyzer
- 相比Simple Analyzer多了去除請用詞處理
- 停用詞指語氣助詞等修飾性詞語,如the, an, 的, 這等
- Keyword Analyzer
- 不分詞,直接將輸入作為一個單詞輸出
- Pattern Analyzer
- 通過正則表示式自定義分隔符
- 預設是\W+,即非字詞的符號作為分隔符
ES預設對中文分詞是一個一個字來解析,這種情況會導致解析過於複雜,效率低下,所以目前有幾個開源的中文分詞器,來專門解決中文分詞,其中常用的叫IK
中文分詞
- 難點
- 中文分詞指的是將一個漢字序列切分為一個一個的單獨的詞。在英文中,單詞之間以空格作為自然分界詞,漢語中詞沒有一個形式上的分界符
- 上下文不同,分詞結果迥異,比如交叉歧義問題
- 常見分詞系統
安裝配置ik中文分詞外掛
# 在Elasticsearch安裝目錄下執行命令,然後重啟es
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
# 如果由於網路慢,安裝失敗,可以先下載好zip壓縮包,將下面命令改為實際的路徑,執行,然後重啟es
bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-ik-6.3.0.zip
ik兩種分詞模式ik_max_word 和 ik_smart 什麼區別?
-
ik_max_word: 會將文字做最細粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,中華人民,中華,華人,人民共和國,人民,人,民,共和國,共和,和,國國,國歌”,會窮盡各種可能的組合;
-
ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,國歌”。
你也可以直接上IK的github的教程來配置,https://github.com/medcl/elasticsearch-analysis-ik。
安裝完後,修改elasticsearch.yml檔案,把ik分詞器設定為es的預設分詞器
index.analysis.analyzer.default.type:ik
重啟es,注意es中的每個節點都要進行上述配置。