聊聊 elasticsearch 之分詞器配置 (IK+pinyin)
阿新 • • 發佈:2019-03-20
發現 批量 plugin ik分詞 eight 搜索數據 ik分詞器 系統 字段
系統:windows 10
elasticsearch版本:5.6.9
es分詞的選擇
- 使用es是考慮服務的性能調優,通過讀寫分離的方式降低頻繁訪問數據庫的壓力,至於分詞的選擇考慮主要是根據目前比較流行的分詞模式,根據參考文檔自己搭建測試。
es配置目錄結構
- 在此先貼出es下plugins的目錄結構,避免安裝時一臉茫然(出自本人配置目錄,可根據自身需要進行調整):
- es插件目錄結構:
- ik壓縮包內文件列表:
- pinyin壓縮包內文件目錄:
IK 分詞器
- IK分詞器下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v5.6.11
- 進入鏈接,選擇對應版本編譯好的壓縮包,點擊即可下載。如下圖: 、
- 上述步驟下載後,解壓文件到至\elasticsearch5.6.9\plugins\ik目錄下(如無ik目錄,手動創建即可),重新啟動es服務,即可看到控制臺輸出的插件信息,表示配置成功。如下圖:
pinyin分詞器
- 拼音分詞器下載地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases?after=v5.6.11
- 拼音分詞的配置類似於ik分詞,進入鏈接,選擇對應版本編譯好的壓縮包,點擊即可下載。如下圖:
- 上述步驟下載後,解壓文件到至\elasticsearch5.6.9\plugins\pinyin目錄下(如無pinyin目錄,手動創建即可),重新啟動es服務,即可看到控制臺輸出的插件信息,表示配置成功。如下圖:
分詞器的測試案例
- IK分詞,主要強調兩種分詞模式:ik_smart和ik_max_word
- ik_smart是將文本做了正確的拆分,如下圖:
- 看到結果發現ik_smart分詞模式拆分的不夠細,“陽光明媚”並沒有拆分開,所以接下來就該另一種分詞出場了 ---- ik_max_word,直接上結果,如下圖:
- 這種更加詳細的拆分才是我想要的,這回不用擔心高級搜索了····
- 拼音分詞,簡言之就是將文本拆分成更加詳細拼音,圖解如下:
- ik與pinyin的結合使用(註:當使用分詞搜索數據的時候,必須是通過分詞器分析的數據才能搜索出來,否則無法搜索出數據)
- 創建索引時可以自定義分詞器配置,通過映射可以指定自定義的分詞器,配置如下圖:
- 創建名稱為“greatom”的索引,自定義“ik_smart_pinyin”和“ik_max_word_pinyin”的分詞器,過濾設置為“g_pinyin”,如上圖右側提示則表示設置成功,可以通過“GET greatom/settings”查詢配置信息。
- 創建type時,需要在字段的解析屬性(analyzer)中設置自定義名稱的映射,如下圖:
- 如上圖右側提示則表示創建成功,接下來增加點數據,以便後續測試。
- 測試數據按照上圖方式即可進行批量新增,也可對索引數據進行查詢。接下來就開始正式的分詞查詢。
- 上圖表示兩種分詞的查詢格式,可以聯想搜索出相關的所有數據,感覺比較智能了。
- 創建索引時可以自定義分詞器配置,通過映射可以指定自定義的分詞器,配置如下圖:
結尾
- 通過對es分詞的了解和使用,發現選擇的兩種分詞模式已經滿足自己項目的使用,還未進行更深入的了解,後續會繼續了解底層及分詞原理,如有瑕疵或更好的見解,希望可以交流學習。
聊聊 elasticsearch 之分詞器配置 (IK+pinyin)