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