ElasticSearch 內(nèi)置了分詞器,如標(biāo)準(zhǔn)分詞器、簡單分詞器、空白詞器等。但這些分詞器對我們最常使用的中文并不友好,不能按我們的語言習(xí)慣進(jìn)行分詞。
ik分詞器就是一個標(biāo)準(zhǔn)的中文分詞器。它可以根據(jù)定義的字典對域進(jìn)行分詞,并且支持用戶配置自己的字典,所以它除了可以按通用的習(xí)慣分詞外,我們還可以定制化分詞。
ik分詞器是一個插件包,我們可以用插件的方式將它接入到ES。
一、安裝
1.1 下載
下載地址:ik分詞器地址
注意要選擇跟自己es保持一致的版本下載。
1.2解壓
將下載的安裝包在es安裝目錄下的plugins下新建一個ik文件夾、將文件解壓。
1.3啟動
啟動成功之后可以看見ik插件已經(jīng)運(yùn)行
也可以通過當(dāng)前命令查看插件是否安裝。
插箱即用,到此ik分詞器的安裝就完成了。
二、使用IK分詞器
IK分詞器有兩種分詞模式:ik_max_word和ik_smart模式。
1、ik_max_word
會將文本做最細(xì)粒度的拆分,比如會將"曾舒琪董事長早上好"拆分為"曾、舒琪、董事長、董事、長、早上好、早上、上好"
GET /_analyze
{
"analyzer": "ik_max_word", // 最細(xì)粒度劃分
"text": "曾舒琪董事長早上好"
}
執(zhí)行結(jié)果如下:
{
"tokens" : [
{
"token" : "曾",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "舒琪",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "董事長",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "董事",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "長",
"start_offset" : 5,
"end_offset" : 6,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "早上好",
"start_offset" : 6,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "早上",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 6
},
{
"token" : "上好",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 7
}
]
}
2、ik_smart
會做最粗粒度的拆分,比如會將"曾舒琪董事長早上好"拆分成"曾、舒琪、董事長、早上好"
GET /_analyze
{
"analyzer": "ik_smart", // 最粗粒度劃分
"text": "曾舒琪董事長早上好"
}
執(zhí)行結(jié)果如下:
{
"tokens" : [
{
"token" : "曾",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "舒琪",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "董事長",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "早上好",
"start_offset" : 6,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 3
}
]
}
這就是ik分詞器兩種簡單的使用模式
問題
我們使用這兩種模式,想讓ik分詞器把名詞進(jìn)行一個拆開劃分,但是有一個問題,曾舒琪這明顯就是一個人名,兩種模式都并沒有把這個詞匯拆開到一起
解決方法
其實(shí)ik分詞器給我們提供了一系列的詞典,我們只需要添加一個自己的詞典。
1、找到config目錄下的xml配置文件
2、這里我們需要添加我們自己的詞典。其實(shí)所謂詞典就是創(chuàng)建一個名稱后綴以dict結(jié)尾的文件。
3、這里我添加了一個shipley_zeng.dict的詞典
4、那這個詞典哪里來的呢?憑空出現(xiàn)嗎?我們返回上一級目錄??梢钥匆娪泻芏嘣~典、我們隨便打開一個看看。
看看這個main.dict
可以看見這邊有特別多的詞匯、這些詞匯在實(shí)際的應(yīng)用開發(fā)過程當(dāng)中肯定是不夠用的、我們要創(chuàng)建一個屬于我們自己的詞典。
5、創(chuàng)建一個自己的詞典到config目錄下,名字跟上面提到的一樣叫做shipley_zeng.dict
內(nèi)容如下,這邊我們要注意一下編碼格式為UTF-8
6、加入這個詞典后我們在重新啟動es,可以看見已經(jīng)成功的加載了我們創(chuàng)建的詞典
7、我們在使用 ik_max_word 最細(xì)粒度查詢看看效果
GET /_analyze
{
"analyzer": "ik_max_word", // 最細(xì)粒度劃分
"text": "曾舒琪董事長早上好"
}
執(zhí)行結(jié)果如下:
{
"tokens" : [
{
"token" : "曾舒琪",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "舒琪",
"start_offset" : 1,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "董事長",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "董事",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "長",
"start_offset" : 5,
"end_offset" : 6,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "早上好",
"start_offset" : 6,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "早上",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 6
},
{
"token" : "上好",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 7
}
]
}
8、使用 ik_smart 最粗粒度查詢看看效果
GET /_analyze
{
"analyzer": "ik_smart", // 最粗粒度劃分
"text": "曾舒琪董事長早上好"
}
執(zhí)行結(jié)果如下:
{
"tokens" : [
{
"token" : "曾舒琪",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "董事長",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "早上好",
"start_offset" : 6,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 2
}
]
}
9、我們可以看見、現(xiàn)在不管使用ik_max_word還是ik_smart,他都能將曾舒琪這個詞匯拆開組合,達(dá)到了我們所需要的訴求。文章來源:http://www.zghlxwxcb.cn/news/detail-447636.html
總結(jié)
以上就是本地elasticsearch中文分詞器 ik分詞器及使用,希望對剛剛接觸es的小伙伴有所幫助,謝謝,如有疑問請隨時聯(lián)系我。文章來源地址http://www.zghlxwxcb.cn/news/detail-447636.html
到了這里,關(guān)于本地elasticsearch中文分詞器 ik分詞器安裝及使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!