1. 程式人生 > >ElasticSearch系列五:掌握ES使用IK中文分詞器

ElasticSearch系列五:掌握ES使用IK中文分詞器

一、內建分詞器的介紹
例:Set the shape to semi-transparent by calling set_trans(5)
standard analyzer(預設):set, the, shape, to, semi, transparent, by, calling, set_trans, 5
simple analyzer:set, the, shape, to, semi, transparent, by, calling, set, trans
whitespace analyzer:Set, the, shape, to, semi-transparent, by, calling, set_trans(5)
language analyzer:set, shape, semi, transpar, call, set_tran, 5
二、測試分詞器
GET /_analyze
{
  "analyzer": "standard",
  "text": "Text to analyze"
}
三、IK中文分詞器
1.步驟:
git clone https://github.com/medcl/elasticsearch-analysis-ik
mvn package
將target/releases/elasticsearch-analysis-ik-*.*.*.zip拷貝到es/plugins/ik目錄下
在es/plugins/ik下對elasticsearch-analysis-ik-*.*.*.zip進行解壓縮
重啟es

2.兩種analyzer
ik_max_word
: 會將文字做最細粒度的拆分
ik_smart: 會做最粗粒度的拆分
3.使用
PUT /my_index 
{
 "mappings": {
"my_type": {
 "properties": {
"text": {
 "type": "text",
 "analyzer": "ik_max_word"
}
 }
}
 }
}
4.測試
GET /my_index/_analyze
{
 "text": " 對於你,我始終只能以陌生人的身份去懷念。",
 "analyzer": "ik_max_word"
}
5.配置檔案
IKAnalyzer.cfg.xml:用來配置自定義詞庫
main.dic:ik原生內建的中文詞庫,總共有27萬多條,只要是這些單詞,都會被分在一起
quantifier.dic:放了一些單位相關的詞
suffix.dic:放了一些字尾
surname.dic:中國的姓氏
stopword.dic:英文停用詞
6.新增自定義詞庫

IKAnalyzer.cfg.xml:ext_dict配置項,custom/mydict.dic
  新增自定義停用詞庫
IKAnalyzer.cfg.xml:ext_stopwords配置項,custom/ext_stopword.dic
7.熱更新方案
  • 第一種:修改ik分詞器原始碼,然後手動支援從mysql中每隔一定時間,自動載入新的詞庫
①下載原始碼
https://github.com/medcl/elasticsearch-analysis-ik/tree/v6.2.4
②修改原始碼
Dictionary類,169行:Dictionary單例類的初始化方法,在這裡需要建立一個我們自定義的執行緒,並且啟動它
HotDictReloadThread類:就是死迴圈,不斷呼叫Dictionary.getSingleton().reLoadMainDict(),去重新載入詞典
Dictionary類,389行:this.loadMySQLExtDict();
Dictionary類,683行:this.loadMySQLStopwordDict();
③mvn package打包程式碼
target\releases\elasticsearch-analysis-ik-6.2.4.zip
④解壓縮ik壓縮包
將mysql驅動jar,放入ik的目錄下
⑤將mysql驅動jar,放入ik的目錄下
⑥修改jdbc相關配置
⑦重啟es,觀察日誌
⑧在mysql中新增詞庫與停用詞
⑨分詞實驗,驗證熱更新生效
(點選下載已修改好的zip包)
  • 第二種:基於ik分詞器原生支援的熱更新方案,部署一個web伺服器,提供一個http介面,通過modified和tag兩個http響應頭,來提供詞語的熱更新
注:推薦用第一種。第二種ik git社群官方都不建議採用,覺得不太穩定。

相關推薦

ElasticSearch系列掌握ES使用IK中文

一、內建分詞器的介紹例:Set the shape to semi-transparent by calling set_trans(5)standard analyzer(預設):set, the, shape, to, semi, transparent, by, cal

搜索引擎系列Lucene提供的、IKAnalyze中文集成

author oid core 長度 maven項目 int get attribute clu 一、Lucene提供的分詞器StandardAnalyzer和SmartChineseAnalyzer 1.新建一個測試Lucene提供的分詞器的maven項目LuceneAn

ElasticSearch搜索引擎安裝配置中文IK插件

art linux系統 nal smart 分享 內容 分詞 search dcl 一、IK簡介 ElasticSearch(以下簡稱ES)默認的分詞器是標準分詞器Standard,如果直接使用在處理中文內容的搜索時,中文詞語被分成了一個一個的漢字,因此引入中文分詞器IK就

Elasticsearch 5.X為index指定中文ik

Elasticsearch用於json格式資料的全文檢索十分方便,但是需要一些時間來熟悉和配置。最權威的配置說明在官方文件這裡,但是由於是英文的,而且新概念和內容十分多,初學者往往不容易找到解決問題的辦法。筆者解決這篇文章中的問題就花了2天時間,所以記錄下來,方便初學者查閱。

ElasticsearchElasticsearch 6.x 探索之路-中文IK

1.分詞機制 Elasticsearch對於查詢,是採取按分詞的結果進行查詢的,作為一款非國產的軟體,自然對於中文的查詢支援並不是很好,預設只會把中文拆分成單字,而通常使用都是以“詞”作為基準單位的。 我們可以使用外掛(plugins)機制去拓展Elasticsearch

Elasticsearch系列---倒排索引原理與

概要 本篇主要講解倒排索引的基本原理以及ES常用的幾種分詞器介紹。 倒排索引的建立過程 倒排索引是搜尋引擎中常見的索引方法,用來儲存在全文搜尋下某個單詞在一個文件中儲存位置的對映。通過倒排索引,我們輸入一個關鍵詞,可以非常快地獲取包含這個關鍵詞的文件列表。 我們先看英文的,假設我們有兩個文件: I have

)Lucene——中文

實現 ext cse ron -a tag 大小 -c .com 1. 什麽是中文分詞器 對於英文,是安裝空格、標點符號進行分詞 對於中文,應該安裝具體的詞來分,中文分詞就是將詞,切分成一個個有意義的詞。 比如:“我的中國人”,分詞:我、的、中

從頭開始編寫基於隱含馬爾可夫模型HMM的中文

lan reverse single trim 地址 note str rip resources http://blog.csdn.net/guixunlong/article/details/8925990 從頭開始編寫基於隱含馬爾可夫模型HMM的中文分詞器之一 - 資

Linux下ElasticSearch6.4.x、ElasticSearch-Head、Kibana以及中文IK的安裝配置

ElasticSearch 安裝配置 下載 # 官網下載壓縮包 [[email protected] /home]#  wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.

ElasticSearch-6.4.1安裝中文Analysis-ik.

一:使用背景和安裝過程.         1. ElasticSearch-6.4.1.(Windows環境下)         &nbs

Es學習第課, 介紹和中文配置

 上課我們介紹了倒排索引,在裡面提到了分詞的概念,分詞器就是用來分詞的。 分詞器是ES中專門處理分詞的元件,英文為Analyzer,定義為:從一串文字中切分出一個一個的詞條,並對每個詞條進行標準化。它由三部分組成, Character Filters:分詞之前進行預處

elasticsearch教程--中文作用和使用

目錄 概述 環境準備 認識中文分詞器 常用的中文分詞器 IK Analyzer hanlp中文分詞器 彩蛋 概述         上一篇博文

elasticsearch安裝中文

1. 分詞器的安裝 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.z

Elasticsearch通過docker安裝及安裝中文外掛

本文講解CentOS 7通過docker安裝Elasticsearch及中文外掛安裝。 系統配置 這個配置具體作用,我也不懂,不配置的話,可能會啟動失敗 sudo sysctl -w vm.max_map_count=262144 啟動ES dock

Elasticsearch 中文IK

1、安裝說明 https://github.com/medcl/elasticsearch-analysis-ik 2、release版本 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、安裝外掛 bin/elasti

第二節 Elasticsearch加入中文IK

一、簡介 Elasticsearch 內建的分詞器是standard對英文分詞還好,但對中文的支援就比較弱,所以需要另 外引入一箇中文分詞器。目前比較流行的中文分詞器有: IKAnalyzer 、 MMSeg4j、 Paoding等

java HashMap實現中文 應用敏感過濾實現

今天下午部門內部技術分享是分詞器演算法。這次的主講是大名鼎鼎的Ansj分詞器的作者-孫健。 作者簡介: Ansj分詞器作者 elasticsearch-sql(elasticsearch的sql外掛)作者,支援sql查詢 nlp-lang自然語言工具包發起人 NLPCN(自然語言處理

elasticsearch 中文 elasticsearch-analysis-ik

一、IK分詞器安裝 2、在 elasticsearch-5.4.0/plugins/ 目錄下新建名為 ik 的資料夾,拷貝elasticsearch-analysis-ik-5.4.0目錄下所有的檔案到 elasticsearch-5.4.0/plugins/ik/ 目

Elasticsearch筆記六之中文及自定義

中文分詞器 在lunix下執行下列命令,可以看到本來應該按照中文”北京大學”來查詢結果es將其分拆為”北”,”京”,”大”,”學”四個漢字,這顯然不符合我的預期。這是因為Es預設的是英文分詞器我需要為其配置中文分詞器。 curlHTTP://192.168.79.131:9

Elasticsearch中文

Elasticsearch的中文分詞器   1、單字分詞:     如:“我們是中國人”     效果:“我”“們”“是”“中”“國”“人”   2、二分法分詞:按兩個字進行切分。     如:“我們是中國人”,效果:“我們”、“們是”、“是中”、“中國”、“國人