1. 程式人生 > >聊聊 elasticsearch 之分詞器配置 (IK+pinyin)

聊聊 elasticsearch 之分詞器配置 (IK+pinyin)

發現 批量 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_smartik_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)