Elasticsearch 使用中文分詞

2021-02-20 ImportNew

(點擊上方公眾號,可快速關注)

來源:Way Lau ,

waylau.com/elasticsearch-use-ik-analysis/

本文演示了如何使用IK Analysis 插件來實現在 Elasticsearch 中的中文分詞功能。

使用中文分詞

在「Spring Boot應用企業級博客系統」課程中(http://coding.imooc.com/class/125.html),所有的博客功能都已經完成了。讀者朋友們開始愉快地使用博客來發表博客了。但如果朋友們足夠細心的話,發現在輸入中文的標籤的時候,存在一定的問題。

比如,當我們想將某個博客標記為「大神」時,博客系統卻將這個單詞粗暴的分成了如圖21-2所示的兩個詞「大」和「神」。顯然,這並不符合用戶的使用習慣。

這是 Elasticsearch 語言分析器上的限制,它並不能友好的處理所有語言,特別是中文。這種情況下,我們就需要額外的中文分詞器來協助我們了。

本章節,我們將演示使用 IK Analysis 插件來幫助我們實現中文分詞。

IK Analysis 插件

IK Analysis 插件(https://github.com/medcl/elasticsearch-analysis-ik/)就是一款專門用於 Elasticsearch 的分詞器,可以友好的處理中文。

IK Analysis 插件將 Lucene IK 分析儀(http://code.google.com/p/ik-analyzer/)集成到了 Elasticsearch 中,從而支持自定義分詞。

安裝 IK Analysis

安裝 IK Analysis 非常簡單。主要有兩種方式。

使用 elasticsearch-plugin

如果 Elasticsearch 是 5.5.1 以後的版本,可以使用 elasticsearch-plugin 來安裝,安裝方式如下:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip

下載解壓到指定目錄

另外一種方式是,下載安裝包,解壓到 Elasticsearch 安裝目錄的 /plugins/目錄下即可。

下圖展示了 IK 的安裝目錄。

需要注意的是,不管是哪種安裝方式,相應的插件,要對應相應的 Elasticsearch 版本,否則可能會安裝不成功。 下載地址為 https://github.com/medcl/elasticsearch-analysis-ik/releases。本章節,我們使用 IK Analysis for Elasticsearch 5.5.0 版本。

使用 IK Analysis

要使用 IK Analysis,需要在文檔類裡面,指定相應的分詞器。我們在 EsBlog 的 tags 屬性上,添加了searchAnalyzer = 「ik_smart」, analyzer = 「ik_smart」的註解內容就可以了。

public class EsBlog implements Serializable {

  

    ...

 

    @Field(type = FieldType.text,fielddata = true, searchAnalyzer = "ik_smart", analyzer = "ik_smart") 

    private String tags;  // 標籤

下圖展示了使用了IK分詞的標籤效果

IK Analysis 類型

ik_smart 是 IK Analysis 其中一種分詞形式。IK Analysis主要有兩種類型的分詞形式,分別是 ik_max_word 和 ik_smart。

ik_max_word: 會將文本做最細粒度的拆分,比如會將「中華人民共和國國歌」拆分為「中華人民共和國」、「中華人民」、「中華」、「華人」、「人民共和國」、「人民」、「人」、「民」,、「共和國」、「共和」、「和」、「國歌」等,會窮盡各種可能的組合;

ik_smart: 會做最粗粒度的拆分,比如會將「中華人民共和國國歌」拆分為「中華人民共和國」、「國歌」。

參考

看完本文有收穫?請轉發分享給更多人

關注「ImportNew」,看技術乾貨

相關焦點

  • Elasticsearch 及 IK 中文分詞插件安裝教程
    一、安裝Java並配置 JAVA_HOME 環境變量由於Elasticsearch是使用Java構建的,所以首先需要安裝 Java 8 或更高版本 才能運行。所有Elasticsearch節點和客戶機上都應該使用相同的JVM版本。1. 安裝Java根據不同的系統,從 https://www.oracle.com/techne...
  • Elasticsearch--分詞-自定義擴展詞庫---全文檢索引擎ElasticSearch工作筆記022
    然後還有一種方法就是,我們使用nginx,來作為web伺服器,配置一下nginx然後讓ik分詞器去請求我們的nginx,然後從我們的nginx上獲取我們自定義的分詞,來進行按照我們的自定義的分詞進行分詞
  • Elasticsearch安裝中文分詞器analysis-ik插件和簡單使用
    一、安裝中文分詞器插件國內最常用的:elasticsearch-analysis-ik
  • ES——中文分詞以及詞庫擴展
    中文分詞插件的安裝:     elasticserch默認情況下是不支持中文分詞的,所以在我們日常的開發中需要安裝下中文詞庫的插件
  • ElasticSearch 中的中文分詞器該怎麼玩?
    內置分詞器:4.2 中文分詞器在 Es 中,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件,代碼託管在 GitHub 上:https://github.com/medcl/elasticsearch-analysis-ik4.2.1
  • ElasticSearch中IK分詞器的使用
    分詞的效果直接影響搜索的結果。對於沒有能力自研分詞,或者一般的使用場景,都會使用ik分詞器作為分詞插件。下載安裝  公眾號後臺回復1002。下載ik的壓縮包。  如果要elasticsearch和kibana的壓縮包,請回復1001。  下載完成之後。
  • ElasticSearch中文分詞器-IK分詞器的使用
    首先我們通過Postman發送GET請求查詢分詞效果GET http:{ "text":"農業銀行"}得到如下結果,可以發現es的默認分詞器無法識別中文中農業、銀行這樣的詞彙,而是簡單的將每個字拆完分為一個詞,這顯然不符合我們的使用要求。
  • Elasticsearch自定義分詞器
    14、Mmseg 分詞器也支持 Elasticsearch下載地址:https://github.com/medcl/elasticsearch-analysis-mmseg/releases 根據對應的版本進行下載如何使用:1、創建索引:1curl -XPUT http://localhost:9200/index
  • ElasticSearch7.6.x總結-(前篇)
    正文開始:官網下載地址:https://www.elastic.co/cn/elasticsearch/7.6.2版本:https://www.elastic.co/downloads/past-releases/elasticsearch-7-6-2ELK三劍客,都是解壓即用.
  • 整合篇:零基礎學習與使用ElasticSearch
    與Apache Solr相比,在Elasticsearch中處理多租戶非常容易。Elasticsearch使用JSON對象作為響應,這使得可以使用不同的程式語言調用Elasticsearch伺服器。Elasticsearch支持幾乎大部分文檔類型,但不支持文本呈現的文檔類型。
  • 知乎Live全文搜索之使用Elasticsearch做搜索建議
    Elasticsearch環境搭建我有記錄筆記到Evernote的習慣,正好拿出來。我一向喜歡安裝最新的版本的習慣,中文搜索使用了elasticsearch-analysis-ik,當時ik只支持到5.1.1,而brew會安裝最新的5.1.2,造成不能使用這個中文分詞插件。
  • spring data系列之elasticsearch
    安裝 IK分詞器        ES默認的中文分詞器是將每一個漢字作為一個詞,這顯然不合適,而IK分詞是一款國人開發的相對簡單的中文分詞器,它包含大量的中文詞,而且支持自定義分詞。        ik_smart :會做最粗粒度的拆分,比如會將「中華人民共和國人民大會堂」拆分為中 華人民共和國、人民大會堂        兩種分詞器使用的最佳實踐是:索引時用ik_max_word,在搜索時用ik_smart。即:索引時最大化的將文章內容分詞,搜索時更精確的搜索到想要的結果。
  • Spring Data ElasticSearch 使用
    http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd "> <!
  • 全文搜尋引擎 Elasticsearch 入門
    $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip $ unzip elasticsearch-5.5.1.zip $ cd elasticsearch-5.5.1/ 接著,進入解壓後的目錄,運行下面的命令,啟動 Elastic
  • ElasticSearch介紹
    /cn/products/elasticsearchGithub:https://github.com/elastic/elasticsearch總結:1、elasticsearch是一個基於Lucene的高擴展的分布式搜索伺服器,支持開箱即用。
  • 全網必會的搜索技術-ElasticSearch(一)
    而中文的詞會被分成一個一個的中文漢字,所以需要一個中文分詞器插件用來支持中文分詞。版本同樣是7.6.1.es001用戶創建/usr/local/es/elasticsearch-7.6.1/data/usr/local/es/elasticsearch-7.6.1/log/usr/local/es/elasticsearch-7.6.1
  • 全文搜尋引擎Elasticsearch入門教程
    $ curl -X DELETE 'localhost:9200/weather'四、中文分詞設置首先,安裝中文分詞插件。這裡使用的是 ik,也可以考慮其他插件(比如 smartcn)。$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip上面代碼安裝的是5.5.1版的插件,與 Elastic 5.5.1 配合使用。
  • 全文搜尋引擎 Elasticsearch 入門教程
    $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip $ unzip elasticsearch-5.5.1.zip $ cd elasticsearch-5.5.1/ 接著,進入解壓後的目錄,運行下面的命令,啟動 Elastic
  • 實戰:Nodejs+Mongodb+Elasticsearch 實現簡單的搜索
    elasticsearch 的基本功能就已經足夠一般的搜索需求。本文將介紹,如何使用 nodejs + mongodb + es 實現一個簡單而強大的全文搜索功能,以提高網站搜索體驗。基本架構圖數據存儲在 mongodb使用 elasticsearch 作為搜索資料庫nodejs 用官方客戶端 elasticsearch-js
  • ElasticSearch
    • 映射(mapping) mapping定義了每個欄位的類型、欄位所使用的分詞器等。相當於關係型資料庫中的表結構。 • 文檔(document) Elasticsearch中的最小數據單元,常以json格式顯示。一個document相當於關係型資料庫中的一行數據。