es筆記四之中文分詞插件安裝與使用

来源:https://www.cnblogs.com/hunterxiong/archive/2023/05/21/17418801.html
-Advertisement-
Play Games

> 本文首發於公眾號:Hunter後端 > 原文鏈接:[es筆記四之中文分詞插件安裝與使用](https://mp.weixin.qq.com/s/aQuwrUzLZDKLv_K8dKeVzw) 前面我們介紹的操作及演示都是基於英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操 ...


本文首發於公眾號:Hunter後端
原文鏈接:es筆記四之中文分詞插件安裝與使用

前面我們介紹的操作及演示都是基於英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操作肯定也是需要使用中分分詞。

這裡我們介紹一下如何安裝中文分詞插件。

在介紹安裝之前,我們可以先來測試一下沒有中文分詞的分詞效果,我們先來插入一條數據:

PUT /exam/_doc/16
{
    "name" : "張三豐",
    "address": "一個蘋果"
}

如果是中文分詞,我們可以想到 '一個蘋果' 應該會被分為 '一個' 和 '蘋果' 這兩個詞,但是預設的分詞是無法這樣分詞的,我們可以嘗試搜索一下:

GET /exam/_search
{
  "query": {
    "term": {
      "address": "一個"
    }
  }
}

可以發現是無法搜索到結果的。

我們可以查看一下這條數據的 address 欄位被分詞的結果:

GET /exam/_doc/16/_termvectors?fields=address

其中,_doc 後面的 16 是我們要查詢的數據的 id,fields 後面跟著的要查看的分詞結果的欄位名。

可以看到 一個蘋果 這個字元串,被挨個分成了四個。

然後我們來安裝一下中文分詞的插件。

安裝中文分詞插件

在 elasticsearch 安裝的目錄下,執行下麵的語句:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip

這裡我們安裝的是 7.6.0 版本的 es,所以安裝對應的分詞插件。

然後我們重新建立這個 index,為 address 欄位加上指定的分詞插件:

挨個執行下麵的命令:

DELETE /exam/

PUT /exam

PUT /exam/_mapping
{
  "properties": {
    "address": {
      "type": "text",
      "analyzer": "ik_max_word",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    },
    "name": {
      "type": "keyword"
    }
  }
}

這裡,和第一次創建 mapping 的時候比,多了一行 analyzer 的定義。

然後我們再次重覆上面的插入和查詢操作:

PUT /exam/_doc/16
{
    "name" : "張三豐",
    "address": "一個蘋果"
}

GET /exam/_search
{
  "query": {
    "term": {
      "address": "一個"
    }
  }
}

可以看到,這次我們搜索 一個,就可以查詢到數據了。

然後我們看下這條數據的 address 的分詞結果:

GET /exam/_doc/16/_termvectors?fields=address

可以看到,這次返回的結果除了單獨的 '一' 和 '個' 之外,還有被分成整體的 '一個' 和 '蘋果'。

查看分詞結果

這裡額外介紹一下如何查看字元串的分詞。

如果我們有一個字元串,想要知道它會被如何分詞,可以直接使用下麵的命令:

POST /_analyze
{
  "analyzer": "ik_smart",
  "text": "一個蘋果"
}

其中,analyzer 是指定的分詞的插件,如果不指定就會使用預設的分詞功能。

中文分詞插件的github 地址如下:https://github.com/medcl/elasticsearch-analysis-ik

如果想獲取更多後端相關文章,可掃碼關註閱讀:
image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 🥑本篇為學習博客園大佬聖殿騎士的《WPF基礎到企業應用系列》以及部分DotNet菜園的《WPF入門教程系列》所作筆記,對應聖殿騎士《WPF基礎到企業應用系列》第 1 - 6 章之間內容,包括 WPF 項目結構、程式的啟動和關閉、程式的生命周期、繼承關係以及常見的佈局控制項及其應用。文章有問題的話歡迎... ...
  • ### 前言 首先拋出一個問題,在XAF項目中,我們現在可不可以選擇EFCore?每個人可能都有自己的答案,這也沒有什麼標準答案。下麵是我的個人看法,在剛接觸XAF時,如何選擇ORM,我也是猶豫了許久,最終選擇了XPO,主要基於以下幾點考慮 1.XPO是DEV的產品,支持力度及傾向性要比EFCore ...
  • 什麼是行為機 顧名思義,類比狀態機每個節點是一個狀態,行為機每個節點是描述一種行為。行為機每個節點之間是互斥的,並且節點相互之間完全不用關心是怎麼切換的。這裡就不講狀態機跟行為樹是怎麼做ai的了,這裡只講用行為機怎麼做一個ai。舉個例子 mmo中的小怪策劃案,大致會這麼寫: 小怪在出生點周圍巡邏。發 ...
  • AI框架 1. 幾種AI的設計 AI在游戲中很多,但是為什麼大家總是感覺ai編寫起來十分困難,我後來思考了一番,主要原因是使用的方法不當。之前大家編寫ai主要有幾種方案: a. 狀態機 我是不知道誰想出來這個做法的,真是無力吐槽。本來對象身上任何數據都是狀態,這種方法又要把一些狀態定義成一種新的節點 ...
  • >本文時間 2023-05-20 >作者:sugerqube漆瓷 `cd`,`vi`,`clear`這些屬於常見常用命令本文不再贅述。 # 安裝命令 `yum install vim`舉例安裝vim `rpm -ivh a.rpm b.rpm c.rpm`舉例安裝a,b,c(涉及包相互依賴) # 用 ...
  • 網上的教學視頻大部分全是以centos為教材底子——沒辦法更換系統了,這樣方便麻! 我參考的文章: https://blog.csdn.net/shengjie87/article/details/106805105#:~:text=%E7%94%A8%E6%8C%82%E8%BD%BD%E5%85 ...
  • Wayland 配置起來確實相對麻煩很多,需要註意很多細節,如果不註意就會出現問題,在這裡說一下可能的現象與解決方法。 根據觀察,這些現象在 GNOME 與 KDE 桌面環境鐘均會出現。 ## 現象 ### App 打開慢 現象為當首次打開一個圖形化的 App 時,需要等待2-3秒鐘才會打開,但是如 ...
  • 上一講我們安裝 etcd 服務端,這一講我們來一起學學如何使用 etcd 客戶端常見的命令。文章內容來源於參考資料,如若侵權,請聯繫刪除,謝謝。 > etcd可通過客戶端命令行工具 etcdctl 對etcd進行請求操作 ```sh # 幫助命令,會列出所有的命令和選項,在記不太清命令的時候,可以使 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...