天天看點

Elasticsearch實作中文分詞

教程目錄

  • ​​0x00 教程内容​​
  • ​​0x01 預設标準分詞效果展示​​
  • ​​1. 預設标準分詞器的使用​​
  • ​​2. 建立一個測試索引​​
  • ​​3. 查詢及效果展示​​
  • ​​0x02 分詞插件elasticsearch-analysis-ik​​
  • ​​1. 下載下傳插件​​
  • ​​2. 啟動Elasticsearch​​
  • ​​3. 重新建立測試索引​​
  • ​​0x03 ik分詞效果展示​​
  • ​​1. ik_max_word分詞​​
  • ​​2. ik_smart分詞​​
  • ​​0xFF 總結​​

0x00 教程内容

  1. 預設标準分詞效果展示
  2. 分詞插件elasticsearch-analysis-ik
  3. ik分詞效果展示

0x01 預設标準分詞效果展示

1. 預設标準分詞器的使用

a. 英文分詞效果展示

​http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=I am teacher SHAO​

Elasticsearch實作中文分詞

點選送出請求後,可看到右邊有分詞效果:

Elasticsearch實作中文分詞

b. 中文分詞效果展示

​​http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=邵奈一老師​​

Elasticsearch實作中文分詞

可看到,老師都被分開了,對于中文效果并不理想

2. 建立一個測試索引

a. 索引名:shaonaiyi,類型:teacher

​​http://localhost:9200/shaonaiyi​​

{
  "settings": {
    "number_of_replicas": 0
  },
  "mappings": {
    "teacher": {
      "dynamic": false,
      "properties": {
        "value": {
          "type": "text"
        }
      }
    }
  }
}      
Elasticsearch實作中文分詞

b. 插入資料

​​http://localhost:9200/shaonaiyi/teacher​​

{
  "value":"學大資料"
}      
Elasticsearch實作中文分詞

類似插入多兩條,如下面:

{
  "value":"大學講師"
}      
{
  "value":"學習技能"
}      
3. 查詢及效果展示

a. 查詢【POST】

​​http://localhost:9200/shaonaiyi/teacher/_search/​​

{
  "query": {
    "match": {
      "value": "大學"
    }
  }
}      
Elasticsearch實作中文分詞

b .結論

我們想要的結果隻是:大學講師,可是其他帶“大”字和“學”字的結果都搜尋出來了,這不是我們想要的結果。

0x02 分詞插件elasticsearch-analysis-ik

1. 下載下傳插件

a. ​​github.com​​

Elasticsearch實作中文分詞
Elasticsearch實作中文分詞

b. 翻頁,找到自己對應的Elasticsearch版本(如:5.6.1)

Elasticsearch實作中文分詞

c. 點選下載下傳并解壓到Elasticsearch主目錄的plugins目錄下(如:E:\SmallTools\elasticsearch-5.6.1\plugins\elasticsearch)

Elasticsearch實作中文分詞
2. 啟動Elasticsearch

a. 關閉之前的elasticsearch.bat視窗(如沒有啟動則直接啟動)

b. 打開elasticsearch.bat檔案

c. 重新開機後重新整理http://localhost:9100/,可看到前面建立的shaonaiyi索引,但需要重新建立索引,因為插件安裝好了

Elasticsearch實作中文分詞
3. 重新建立測試索引

a. 删除之前的shaonaiyi索引【DELETE】

​​http://localhost:9200/shaonaiyi​​

Elasticsearch實作中文分詞

b. 建立索引【PUT】

​​http://localhost:9200/shaonaiyi​​

{
  "settings": {
    "number_of_replicas": 0
  },
  "mappings": {
    "teacher": {
      "dynamic": false,
      "properties": {
        "value": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}      
Elasticsearch實作中文分詞

0x03 ik分詞效果展示

1. ik_max_word分詞

a. 查詢【POST】

​​http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=邵奈一老師​​

Elasticsearch實作中文分詞
2. ik_smart分詞

a. 将上面的三個均ik_max_word改為ik_smart

b. 建立一個新索引shaonaiyi888

c. 重新查詢,比較不同

Elasticsearch實作中文分詞
Elasticsearch實作中文分詞

0xFF 總結

  1. 如沒有Elasticsearch基礎或者有疑惑,請參考此篇教程:​​Elasticsearch的安裝(windows)​​
  2. 更多與ik分詞插件相關知識請看github:​​medcl/elasticsearch-analysis-ik​​
  3. 看以後是否有需求和時間,再出一個模仿百度的簡單搜尋引擎。

作者簡介:​​邵奈一​​

大學大資料講師、大學市場洞察者、專欄編輯

公衆号、微網誌、 :​​邵奈一​​

繼續閱讀