> 本文首發於公眾號:Hunter後端 > 原文鏈接:[es筆記四之中文分詞插件安裝與使用](https://mp.weixin.qq.com/s/aQuwrUzLZDKLv_K8dKeVzw) 前面我們介紹的操作及演示都是基於英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操 ...
本文首發於公眾號:Hunter後端
原文鏈接:es筆記四之中文分詞插件安裝與使用
前面我們介紹的操作及演示都是基於英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操作肯定也是需要使用中分分詞。
這裡我們介紹一下如何安裝中文分詞插件。
在介紹安裝之前,我們可以先來測試一下沒有中文分詞的分詞效果,我們先來插入一條數據:
PUT /exam/_doc/16
{
"name" : "張三豐",
"address": "一個蘋果"
}
如果是中文分詞,我們可以想到 '一個蘋果' 應該會被分為 '一個' 和 '蘋果' 這兩個詞,但是預設的分詞是無法這樣分詞的,我們可以嘗試搜索一下:
GET /exam/_search
{
"query": {
"term": {
"address": "一個"
}
}
}
可以發現是無法搜索到結果的。
我們可以查看一下這條數據的 address 欄位被分詞的結果:
GET /exam/_doc/16/_termvectors?fields=address
其中,_doc 後面的 16 是我們要查詢的數據的 id,fields 後面跟著的要查看的分詞結果的欄位名。
可以看到 一個蘋果 這個字元串,被挨個分成了四個。
然後我們來安裝一下中文分詞的插件。
安裝中文分詞插件
在 elasticsearch 安裝的目錄下,執行下麵的語句:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
這裡我們安裝的是 7.6.0 版本的 es,所以安裝對應的分詞插件。
然後我們重新建立這個 index,為 address 欄位加上指定的分詞插件:
挨個執行下麵的命令:
DELETE /exam/
PUT /exam
PUT /exam/_mapping
{
"properties": {
"address": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "keyword"
}
}
}
這裡,和第一次創建 mapping 的時候比,多了一行 analyzer 的定義。
然後我們再次重覆上面的插入和查詢操作:
PUT /exam/_doc/16
{
"name" : "張三豐",
"address": "一個蘋果"
}
GET /exam/_search
{
"query": {
"term": {
"address": "一個"
}
}
}
可以看到,這次我們搜索 一個,就可以查詢到數據了。
然後我們看下這條數據的 address 的分詞結果:
GET /exam/_doc/16/_termvectors?fields=address
可以看到,這次返回的結果除了單獨的 '一' 和 '個' 之外,還有被分成整體的 '一個' 和 '蘋果'。
查看分詞結果
這裡額外介紹一下如何查看字元串的分詞。
如果我們有一個字元串,想要知道它會被如何分詞,可以直接使用下麵的命令:
POST /_analyze
{
"analyzer": "ik_smart",
"text": "一個蘋果"
}
其中,analyzer 是指定的分詞的插件,如果不指定就會使用預設的分詞功能。
中文分詞插件的github 地址如下:https://github.com/medcl/elasticsearch-analysis-ik
如果想獲取更多後端相關文章,可掃碼關註閱讀: