国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

elasticsearch學(xué)習(xí)(六):IK分詞器

這篇具有很好參考價值的文章主要介紹了elasticsearch學(xué)習(xí)(六):IK分詞器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、IK分詞器簡介

????????IKAnalyzer是一個開源的,基于java語言開發(fā)的輕量級的中文分詞工具包。從2006年12月推出1.0版開始IKAnalyzer已經(jīng)推出 了3個大版本。最初,它是以開源項目Lucene為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。新版本的IKAnalyzer3.0則發(fā)展為 面向Java的公用分詞組件,獨立于Lucene項目,同時提供了對Lucene的默認優(yōu)化實現(xiàn)。

IK分詞器3.0的特性如下:

  • 1)采用了特有的“正向迭代最細粒度切分算法“,具有60萬字/秒的高速處理能力。
  • 2)采用了多子處理器分析模式,支持:英文字母(IP地址、Email、URL)、數(shù)字(日期,常用中文數(shù)量詞,羅馬數(shù)字,科學(xué)計數(shù)法),中文詞匯(姓名、地名處理)等分詞處理。
  • 3)對中英聯(lián)合支持不是很好,在這方面的處理比較麻煩.需再做一次查詢,同時是支持個人詞條的優(yōu)化的詞典存儲,更小的內(nèi)存占用。
  • 4)支持用戶詞典擴展定義。
  • 5)針對Lucene全文檢索優(yōu)化的查詢分析器IKQueryParser;采用歧義分析算法優(yōu)化查詢關(guān)鍵字的搜索排列組合,能極大的提高Lucene檢索的命中率。

????????當(dāng)我們創(chuàng)建索引時,字段使用的是標準分詞器,所以在查詢的時候時常出現(xiàn)問題。

????????Standard 標準分詞:es默認的,如果是英文按單詞切分,并且會轉(zhuǎn)化成小寫,如果是中文的話,則按一個詞切分。

2、ES集成IK分詞器

2.1、IK分詞器的安裝

1、下載地址:Releases · medcl/elasticsearch-analysis-ik · GitHub

注意:下載時一定要下載與當(dāng)前ES版本一致的分詞器版本,免得出現(xiàn)一些其他問題。

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene?2、解壓 unzip elasticsearch-analysis-ik-6.8.2.zip -d ?elasticsearch-analysis-ik-6.8.2,將解壓后的elasticsearch-analysis-ik-6.8.2文件夾拷貝到elasticsearch-6.8.2/plugins下,并重命名文件夾為ik。

?3、重啟es,即可加載ik分詞器。

2.2、IK分詞器測試

IK提供了兩個分詞算法ik_smart 和 ik_max_word

  • ik_smart:為最少切分
  • ik_max_word:為最細粒度劃分。

2.2.1、最小切分示例

#分詞器測試ik_smart
POST  _analyze
{
    "analyzer":"ik_smart",
    "text":"我是中國人"
}

?結(jié)果:

{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "中國人",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

2.2.2、最細切分示例

#分詞器測試ik_max_word
POST _analyze
{
  "analyzer":"ik_max_word",
  "text":"我是中國人"
}

結(jié)果:

{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "中國人",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "中國",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "國人",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 4
    }
  ]
}

3、IK分詞器為何如此智能

????????通過上面的示例我們也看到了,這種中文的分詞效果是ES內(nèi)置的分詞器無法比擬的。那么它是如何做到的呢?不要過于驚訝,因為原理其實非常簡單,它是通過索引字典來達到的,這樣說可能比較抽象難懂,我們來實際看看ES的plugins/ik/config目錄:

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

3.1、ik分詞器的字典

????????看到那些*.dic結(jié)尾的文件了嗎?其實它就是dictionary(字典)的簡寫,來實際看看字典內(nèi)容:如上圖。

????????實際的詞匯量是非常巨大的,根本不可能完全收錄到字典中。如果有需要,我們完全可以通過在字典文件中增加我們想要的詞語來擴展我們自己的分詞規(guī)則。

4、擴展ik分詞器的字典

示例:

????????“麻花疼”使用ik_smart、ik_max_word 分詞后的結(jié)果都是:麻花、疼。

? ?無法分詞為一個完整的“麻花疼”,因為ik分詞器的詞典中沒有這個詞。示例如下圖:

# 麻花疼 使用ik_smart分詞
GET _analyze
{
  "analyzer": "ik_smart",  
  "text": "麻花疼"
}

{
  "tokens" : [
    {
      "token" : "麻花",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "疼",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 1
    }
  ]
}
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "麻花疼"
}

{
  "tokens" : [
    {
      "token" : "麻花",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "疼",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 1
    }
  ]
}

如何將“麻花疼”分詞為一個完整的詞,需要將其添加到詞典中。

4.1、ik分詞器的配置文件目錄

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

?在plugins/elasticsearch-analysis-ik-6.8.2/config/config目錄下有ik分詞配置文件:

  • IKAnalyzer.cfg.xml用來配置自定義的詞庫
  • main.dic,ik原生內(nèi)置的中文詞庫,只要是這些單詞,都會被分在一起。
  • surname.dic,中國的姓氏。
  • suffix.dic,特殊(后綴)名詞,例如鄉(xiāng)、江、所、省等等。
  • preposition.dic,中文介詞,例如不、也、了、仍等等。
  • stopword.dic,英文停用詞庫,例如a、an、and、the等。
  • quantifier.dic,單位名詞,如厘米、件、倍、像素等。
  • extra開頭的文件,是額外的詞庫。

4.2、IKAnalyzer.cfg.xml配置文件

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

4.3、新增字典配置文件,后綴為dic?

在新的字段配置文件my_ik.dic中添加新詞:“麻花疼”。

注意:詞庫的編碼必須是utf-8

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

?4.4、將新增的配置文件添加到IK字典配置文件中,并重啟ES和KIBANA

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

?ES啟動控制臺中會顯示已經(jīng)讀取到自定義字典:

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

再次查詢,該詞已經(jīng)成功識別?。

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

4.5、IK插件還支持熱更新:

IKAnalyzer.cfg.xml配置文件中的有如下配置:

elasticsearch ik,技術(shù)點,# elasticsearch,elasticsearch,lucene

?其中?words_location?是指一個 url,比如?http://yoursite.com/getCustomDict,該請求只需滿足以下兩點即可完成分詞熱更新。

  1. 該 http 請求需要返回兩個頭部(header),一個是?Last-Modified,一個是?ETag,這兩者都是字符串類型,只要有一個發(fā)生變化,該插件就會去抓取新的分詞進而更新詞庫。
  2. 該 http 請求返回的內(nèi)容格式是一行一個分詞,換行符用?\n?即可。

滿足上面兩點要求就可以實現(xiàn)熱更新分詞了,不需要重啟es 。

????????可以將需自動更新的熱詞放在一個?UTF-8?編碼的?.txt文件里,放在 nginx 或其他簡易 http server 下,當(dāng)?.txt文件修改時,http server 會在客戶端請求該文件時自動返回相應(yīng)的 Last-Modified 和 ETag。可以另外做一個工具來從業(yè)務(wù)系統(tǒng)提取相關(guān)詞匯,并更新這個?.txt文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-822898.html

到了這里,關(guān)于elasticsearch學(xué)習(xí)(六):IK分詞器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【ElasticSearch 】IK 分詞器安裝

    【ElasticSearch 】IK 分詞器安裝

    Elasticsearch 要使用 ik,就要先構(gòu)建 ik 的 jar包,這里要用到 maven 包管理工具,而 maven 需要java 環(huán)境,而 Elasticsearch 內(nèi)置了jdk, 所以可以將JAVA_HOME設(shè)置為Elasticsearch 內(nèi)置的jdk 1)設(shè)置JAVA_HOME 2)準備maven安裝包 上傳 maven 安裝包 3)解壓maven安裝包 tar xzf apache-maven-3.1.1-bin.tar.gz 4)設(shè)

    2024年02月07日
    瀏覽(21)
  • ElasticSearch-集成ik分詞器

    ElasticSearch-集成ik分詞器

    本文已收錄于專欄 《中間件合集》 ??我們在項目中集成了ElasticSearch服務(wù)之后,需要對內(nèi)容進行分詞處理。這時候就需要用到分詞器。其實ElasticSearch服務(wù)自身也會帶有分詞器。ElasticSearch服務(wù)自帶的分詞器是單個字進行分的。在我們的業(yè)務(wù)當(dāng)中要求對整個詞進行拆分。這時

    2024年02月11日
    瀏覽(6)
  • Elasticsearch中使用IK分詞配置

    在 Elasticsearch 中,可以使用 IK 分詞器來替代默認的 text 類型。IK 分詞器是一個開源的中文分詞器,支持中文分詞和英文分詞。 要將默認的 text 類型修改為 IK 分詞器,需要進行以下步驟: 安裝 IK 分詞器插件: 下載 IK 分詞器插件,可以從 GitHub 上的 elasticsearch-analysis-ik 頁面下

    2024年02月13日
    瀏覽(18)
  • Elasticsearch之ik中文分詞篇

    es在7.3版本已經(jīng)支持中文分詞,由于中文分詞只能支持到單個字進行分詞,不夠靈活與適配我們平常使用習(xí)慣,所以有很多對應(yīng)中文分詞出現(xiàn),最近使用的是ik分詞器,就說說它吧。 安裝可以百度下有很多教程,需要注意的是ik分詞器的版本要跟es版本對應(yīng)上,避免出現(xiàn)不必要

    2024年02月02日
    瀏覽(29)
  • ElasticSearch8安裝ik分詞器

    ElasticSearch8安裝ik分詞器

    下載與es版本一致的插件包 https://github.com/medcl/elasticsearch-analysis-ik/releases es版本8.2.3,所以下載8.2.3的插件 離線安裝 cd /usr/local/elasticsearch/ ./bin/elasticsearch-plugin install file:///usr/local/elasticsearch/elasticsearch-analysis-ik-8.2.3.zip -v 在線安裝,github網(wǎng)絡(luò)不穩(wěn),不建議 ./bin/elasticsearch-plugin

    2024年02月16日
    瀏覽(25)
  • linux 安裝elasticsearch和ik分詞

    下載elasticsearch wget?https://artifacts.elastic.co/downloads/elasticserch/elasticsearch-7.17.10.tar.gz 解壓elsaticsearch到/usr/local/elasticsearch tar -zxvf?elasticsearch-7.17.10.tar.gz 修改配置文件elasticsearch.yml vim? /usr/local/elasticsearch-7.17.10/config/elasticsearch.yml # 集群名稱 cluster.name: myelasticsearch # es節(jié)點id node.nam

    2024年02月01日
    瀏覽(32)
  • ElasticSearch 部署及安裝ik分詞器

    ElasticSearch 部署及安裝ik分詞器

    ansiable playbook鏈接: https://download.csdn.net/download/weixin_43798031/87719490 需要注意的點: 公司es集群現(xiàn)以三個角色部署分別為 Gateway、Master、Data 簡單的理解可以理解為在每臺機器上部署了三個es,以端口和配置文件來區(qū)分這三個es不同的功能。 我們知道本來安裝分詞器是件特別簡單

    2023年04月27日
    瀏覽(18)
  • 本地elasticsearch中文分詞器 ik分詞器安裝及使用

    本地elasticsearch中文分詞器 ik分詞器安裝及使用

    ElasticSearch 內(nèi)置了分詞器,如標準分詞器、簡單分詞器、空白詞器等。但這些分詞器對我們最常使用的中文并不友好,不能按我們的語言習(xí)慣進行分詞。 ik分詞器就是一個標準的中文分詞器。它可以根據(jù)定義的字典對域進行分詞,并且支持用戶配置自己的字典,所以它除了可

    2024年02月05日
    瀏覽(36)
  • 關(guān)于elasticsearch與kibana、IK分詞器

    初識elasticsearch-正向索引和倒排索引 索引(Index): 分詞器: 索引常見mapping屬性: index:是否創(chuàng)建索引,默認為true analyzer:使用哪種分詞器 properties:該字段的子字段 創(chuàng)建索引庫: 查看、刪除索引庫: 文檔操作: 添加文檔: 刪除文檔的語法: 修改文檔 方式一:全量修改,

    2024年02月08日
    瀏覽(17)
  • Elasticsearch添加7.17.10IK分詞器

    Elasticsearch添加7.17.10IK分詞器

    在https://github.com/medcl/elasticsearch-analysis-ik/tree/7.x中未找到7.17.10版本的發(fā)布版本,如歌ik版本和Elasticsearch版本不同安裝后無法啟動。所以下載git上的源代碼,并手動編譯指定版本IK分詞器。 (1)下載elasticsearch-analysis-ik-7.x源碼的zip壓縮包,并解壓 (2)打開解壓后文件夾里的p

    2024年01月18日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包