ElasticSearch8.1.2 ik分词器
ElasticSearch 內(nèi)置了分詞器,如標(biāo)準(zhǔn)分詞器、簡(jiǎn)單分詞器、空白詞器等。但這些分詞器對(duì)我們最常使用的中文并不友好,不能按我們的語(yǔ)言習(xí)慣進(jìn)行分詞。
測(cè)試ElasticSearch 內(nèi)置分詞器:
post localhost:9200/_analyze參數(shù):
{"text":"測(cè)試分詞器"}IK分詞器
ik分詞器是一個(gè)標(biāo)準(zhǔn)的中文分詞器。可以根據(jù)定義的字典對(duì)域進(jìn)行分詞,并且支持用戶(hù)配置自己的字典,所以它除了可以按通用的習(xí)慣分詞外,還可以定制化分詞。
ik分詞器是一個(gè)插件包,可以用插件的方式將它接入到ES。
一、安裝
1.1 下載
點(diǎn)擊這里,進(jìn)入GitHub下載IK分詞器
注:下載的包一定要和 ElasticSearch 的版本一致。點(diǎn)擊右側(cè)的 Releases ,選擇版本
下載第一個(gè),不要下載源碼包
1.2 安裝
以windows為例,在ES目錄的plugins目錄下創(chuàng)建ik子目錄,然后下載的zip包解壓的內(nèi)容移到里面,最后重啟ES,界面可以看到加載的ik插件
重啟過(guò)程若出現(xiàn)閃退情況,請(qǐng)檢查:
1、版本號(hào)是否匹配
2、包是否下載錯(cuò)
3、下載的zip包是否忘記刪除,也在項(xiàng)目里
ik分詞器有2種模式
- ik_smart 最粗粒度的拆分,比如會(huì)將“測(cè)試分詞器”拆分為測(cè)試、分詞器。
- ik_max_word 最細(xì)粒度的拆分,比如會(huì)將“測(cè)試分詞器”拆分為“測(cè)試、分詞器、分詞、器等詞語(yǔ)。
( ik_max_word 比 ik_smart 劃分的詞條更多,這就是它們?yōu)槭裁唇凶鲎罴?xì)粒度和最粗粒度。)
測(cè)試(ik_max_word)
post http://localhost:9200/_analyze參數(shù)
{"text":"測(cè)試分詞器","analyzer":"ik_max_word"}
總結(jié):
- 針對(duì)文檔添加索引庫(kù)時(shí),最好使用ik_max_work分詞,能夠獲得當(dāng)前文檔最多的詞條
- 針對(duì)搜索條件如果要分詞的話(huà),最好使用ik_smart分詞,能夠更貼近用戶(hù)的需求.
自定義字典
舉例:如果想讓分詞器把 “測(cè)試分詞器試試” 分為 ‘測(cè)試分詞器、測(cè)試、分詞器、試試’
打開(kāi) …\elasticsearch-8.1.2\plugins\ik\config\IKAnalyzer.cfg.xml
可以看到有2個(gè)配置 ext_dict 和 ext_stopwords。分別是擴(kuò)展和停用字典
參照默認(rèn)的dic文件,在config目錄新建 my_ext_dict.dic 和 my_stop_dict.dic
- my_ext_dict.dic文件里 加入想要的分詞
- my_stop_dict.dic文件里 加入舍棄的分詞
然后配置到 IKAnalyzer.cfg.xml
重啟ES,啟動(dòng)日志可以看到加載了我們的字典
效果:
注:配置重啟后,若發(fā)現(xiàn)沒(méi)有效果,檢查下my_ext_dict.dic和 my_stop_dict.dic文件的編碼格式是否UTF-8
映射
常用映射類(lèi)型
1、text
1)analyzer
通過(guò)analyzer屬性指定分詞器。
下邊指定name的字段類(lèi)型為text,使用ik分詞器的ik_max_word分詞模式。
"name": { "type": "text","analyzer":"ik_max_word" }analyzer是指在索引和搜索都使用ik_max_word,如果想單獨(dú)定義搜索時(shí)使用的分詞器則可以通search_analyzer屬性。
ik分詞器建議是索引時(shí)使用ik_max_word將搜索內(nèi)容進(jìn)行細(xì)粒度分詞,搜索時(shí)使用ik_smart提高搜索精確性:
2)index
通過(guò)index屬性指定是否索引。
默認(rèn)為index=true,即要進(jìn)行索引,只有進(jìn)行索引才可以從索引庫(kù)搜索到;
若不需要搜索的則需要指定index=false。
2、keyword關(guān)鍵字字段
keyword字段為關(guān)鍵字字段,通常搜索keyword是按照整體搜索,所以創(chuàng)建keyword字段的索引時(shí)是不進(jìn)行分詞的,是需要全部匹配;
總結(jié)
以上是生活随笔為你收集整理的ElasticSearch8.1.2 ik分词器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c# 操作oracle数据库,C#连接o
- 下一篇: java导入jdk源码_eclipse导