本文首發于公眾號: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
如果想獲取更多后端相關文章,可掃碼關注閱讀:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/557077.html
標籤:其它
下一篇:返回列表