1. 程式人生 > >Elasticsearch外掛(一):ik分詞

Elasticsearch外掛(一):ik分詞

在Elasticsearch的對於中文的檢索,ik效果最好也是使用最火的一款中文分詞外掛。支援自定義詞庫和動態修改詞庫。對於一般情況的的中文檢索,ik分詞是一個很好的選擇。

安裝

版本號要跟Elasticsearch版本對應。

手動安裝:

1.在plugins資料夾中建立ik資料夾

    mkdir  ik

3.解壓到ik資料夾中(所有節點)

4.重啟Elastic-search

自動安裝:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip

注意:命令中附帶版本號。

配置

ik分詞配置檔案:IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 擴充套件配置</comment>
        <!--使用者可以在這裡配置自己的擴充套件字典 -->
        <entry key="ext_dict">finance.dic</entry>
         <!--使用者可以在這裡配置自己的擴充套件停止詞字典-->
        <entry key="ext_stopwords"></entry>
        <!--使用者可以在這裡配置遠端擴充套件字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--使用者可以在這裡配置遠端擴充套件停止詞字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

熱更新字典:

words_location就是指一個url,滿足以下兩點即可完成分詞熱更新。

1. 該 http 請求需要返回兩個頭部(header),一個是 Last-Modified,一個是 ETag,這兩者都是字串型別,只要有一個發生變化,該外掛就會去抓取新的分詞進而更新詞庫。

2. 該 http 請求返回的內容格式是一行一個分詞,換行符用 \n 即可。

注意:

1. 請確保你的擴充套件詞典的文字格式為 UTF8 編碼,每個詞以換行符相隔。

2. ik-5.0.0版本開始使用ik_smart 和 ik_max_word兩種分詞方式。

ik_max_word表示最細粒度拆分。優點是查詢效果比較好。缺點是會產生很多碎片,對於大文字欄位不建議使用ik_max_word。

ik_smart表示最粗粒度拆分,優點是降低了索引儲存。缺點是查詢效果不好。

兩種分詞方式舉例:

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

ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,國歌”。這個時候輸入“中華”是匹配不到的。

使用示例:

        "content": {

          "type": "text",

          "analyzer": "ik_max_word",              ##索引分詞

          "search_analyzer": "ik_max_word"。      ##查詢分詞

        },

——————————————————————————————————

作者:桃花惜春風

轉載請標明出處,原文地址:  

如果感覺本文對您有幫助,請留下您的贊,您的支援是我堅持寫作最大的動力,謝謝!