天天看點

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

elasticsearch官方預設的分詞插件

  1、elasticsearch官方預設的分詞插件,對中文分詞效果不理想。

  比如,我現在,拿個具體執行個體來展現下,驗證為什麼,es官網提供的分詞插件對中文分詞而言,效果差。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopMaster elasticsearch-2.4.3]$ jps

2044 Jps

1979 Elasticsearch

[hadoop@HadoopMaster elasticsearch-2.4.3]$ pwd

/home/hadoop/app/elasticsearch-2.4.3

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?pretty=true' -d '{"text":"這裡是好記性不如爛筆頭感歎号的部落格園"}'

{

"tokens" : [ {

"token" : "這",

"start_offset" : 0,

"end_offset" : 1,

"type" : "<IDEOGRAPHIC>",

"position" : 0

}, {

"token" : "裡",

"start_offset" : 1,

"end_offset" : 2,

"position" : 1

"token" : "是",

"start_offset" : 2,

"end_offset" : 3,

"position" : 2

"token" : "好",

"start_offset" : 3,

"end_offset" : 4,

"position" : 3

"token" : "記",

"start_offset" : 4,

"end_offset" : 5,

"position" : 4

"token" : "性",

"start_offset" : 5,

"end_offset" : 6,

"position" : 5

"token" : "不",

"start_offset" : 6,

"end_offset" : 7,

"position" : 6

"token" : "如",

"start_offset" : 7,

"end_offset" : 8,

"position" : 7

"token" : "爛",

"start_offset" : 8,

"end_offset" : 9,

"position" : 8

"token" : "筆",

"start_offset" : 9,

"end_offset" : 10,

"position" : 9

"token" : "頭",

"start_offset" : 10,

"end_offset" : 11,

"position" : 10

"token" : "感",

"start_offset" : 11,

"end_offset" : 12,

"position" : 11

"token" : "歎",

"start_offset" : 12,

"end_offset" : 13,

"position" : 12

"token" : "号",

"start_offset" : 13,

"end_offset" : 14,

"position" : 13

"token" : "的",

"start_offset" : 14,

"end_offset" : 15,

"position" : 14

"token" : "博",

"start_offset" : 15,

"end_offset" : 16,

"position" : 15

"token" : "客",

"start_offset" : 16,

"end_offset" : 17,

"position" : 16

"token" : "園",

"start_offset" : 17,

"end_offset" : 18,

"position" : 17

} ]

}

[hadoop@HadoopMaster elasticsearch-2.4.3]$

總結

     如果直接使用Elasticsearch的朋友在進行中文内容的搜尋時,肯定會遇到很尴尬的問題——中文詞語被分成了一個一個的漢字,當用Kibana作圖的時候,按照term來分組,結果一個漢字被分成了一組。

     這是因為使用了Elasticsearch中預設的标準分詞器,這個分詞器在進行中文的時候會把中文單詞切分成一個一個的漢字,是以引入es之中文的分詞器插件es-ik就能解決這個問題。

如何內建IK分詞工具

   總的流程如下:

第一步:下載下傳es的IK插件https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x

第二步:使用maven對下載下傳的es-ik源碼進行編譯(mvn clean package -DskipTests)

第三步:把編譯後的target/releases下的elasticsearch-analysis-ik-1.10.3.zip檔案拷貝到ES_HOME/plugins/ik目錄下面,然後使用unzip指令解壓

    如果unzip指令不存在,則安裝:yum install -y unzip

第四步:重新開機es服務

第五步:測試分詞效果: curl 'http://your ip:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"這裡是好記性不如爛筆頭感歎号的部落格們"}'

   注意:若你是單節點的es叢集的話,則隻需在一台部署es-ik。若比如像我這裡的話,是3台,則需在三台都部署es-ik,且配置要一樣。

elasticsearch-analysis-ik-1.10.0.zip  對應于  elasticsearch-2.4.0

elasticsearch-analysis-ik-1.10.3.zip  對應于  elasticsearch-2.4.3

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  我這裡,已經給大家準備好了,以下是我的CSDN賬号。下載下傳好了,大家可以去下載下傳。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  第五步:找到之後,點選,下載下傳,這裡選擇離線安裝。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  第六步:将Elasticsearch之中文分詞器插件es-ik的壓縮包解壓下,初步認識下其目錄結構,比如我這裡放到D盤下來認識下。并為後續的maven編譯做基礎。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  第七步:用本地安裝好的maven來編譯

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

Microsoft Windows [版本 6.1.7601]

版權所有 (c) 2009 Microsoft Corporation。保留所有權利。

C:\Users\Administrator>cd D:\elasticsearch-analysis-ik-2.x

C:\Users\Administrator>d:

D:\elasticsearch-analysis-ik-2.x>mvn

   得到,

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

D:\elasticsearch-analysis-ik-2.x>mvn clean package -DskipTests

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building elasticsearch-analysis-ik 1.10.4

Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac

he/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.pom

Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach

e/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.pom (7 KB at

2.5 KB/sec)

he/maven/enforcer/enforcer/1.0/enforcer-1.0.pom

e/maven/enforcer/enforcer/1.0/enforcer-1.0.pom (12 KB at 19.5 KB/sec)

he/maven/maven-parent/17/maven-parent-17.pom

e/maven/maven-parent/17/maven-parent-17.pom (25 KB at 41.9 KB/sec)

he/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.jar

e/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.jar (22 KB a

t 44.2 KB/sec)

he/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom

e/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom (10

KB at 35.3 KB/sec)

he/maven/plugins/maven-plugins/28/maven-plugins-28.pom

e/maven/plugins/maven-plugins/28/maven-plugins-28.pom (12 KB at 42.1 KB/sec)

he/maven/maven-parent/27/maven-parent-27.pom

e/maven/maven-parent/27/maven-parent-27.pom (40 KB at 94.0 KB/sec)

he/apache/17/apache-17.pom

   需要等待一會兒,這個根據自己的網速快慢。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

e/maven/maven-archiver/2.4/maven-archiver-2.4.jar (20 KB at 19.8 KB/sec)

he/maven/shared/maven-repository-builder/1.0-alpha-2/maven-repository-builder-1.

0-alpha-2.jar

e/maven/maven-project/2.0.4/maven-project-2.0.4.jar (107 KB at 84.7 KB/sec)

Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/codeh

aus/plexus/plexus-utils/2.0.1/plexus-utils-2.0.1.jar (217 KB at 158.7 KB/sec)

e/maven/shared/maven-repository-builder/1.0-alpha-2/maven-repository-builder-1.0

-alpha-2.jar (23 KB at 16.4 KB/sec)

e/maven/maven-model/2.0.4/maven-model-2.0.4.jar (79 KB at 54.3 KB/sec)

e/maven/maven-artifact/2.0.4/maven-artifact-2.0.4.jar (79 KB at 52.9 KB/sec)

[INFO] Reading assembly descriptor: D:\elasticsearch-analysis-ik-2.x/src/main/as

semblies/plugin.xml

[INFO] Building zip: D:\elasticsearch-analysis-ik-2.x\target\releases\elasticsea

rch-analysis-ik-1.10.4.zip

[INFO] BUILD SUCCESS

[INFO] Total time: 01:22 min

[INFO] Finished at: 2017-02-25T14:48:40+08:00

[INFO] Final Memory: 35M/609M

D:\elasticsearch-analysis-ik-2.x>

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

   成功,得到。

  這裡,需要本地(即windows系統)裡,提前安裝好maven,需要來編譯。若沒安裝的博友,請移步,見

      最後得到是,

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  第八步:将最後編譯好的,分别上傳到3台機器裡。$ES_HOME/plugins/ik 目錄下,注意需要建立ik目錄。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopSlave1 elasticsearch-2.4.3]$ pwd

[hadoop@HadoopSlave1 elasticsearch-2.4.3]$ ll

total 56

drwxrwxr-x. 2 hadoop hadoop 4096 Feb 22 01:37 bin

drwxrwxr-x. 3 hadoop hadoop 4096 Feb 22 22:43 config

drwxrwxr-x. 3 hadoop hadoop 4096 Feb 22 07:07 data

drwxrwxr-x. 2 hadoop hadoop 4096 Feb 22 01:37 lib

-rw-rw-r--. 1 hadoop hadoop 11358 Aug 24 2016 LICENSE.txt

drwxrwxr-x. 2 hadoop hadoop 4096 Feb 25 05:15 logs

drwxrwxr-x. 5 hadoop hadoop 4096 Dec 8 00:41 modules

-rw-rw-r--. 1 hadoop hadoop 150 Aug 24 2016 NOTICE.txt

drwxrwxr-x. 4 hadoop hadoop 4096 Feb 22 06:02 plugins

-rw-rw-r--. 1 hadoop hadoop 8700 Aug 24 2016 README.textile

[hadoop@HadoopSlave1 elasticsearch-2.4.3]$ cd plugins/

[hadoop@HadoopSlave1 plugins]$ ll

total 8

drwxrwxr-x. 5 hadoop hadoop 4096 Feb 22 06:02 head

drwxrwxr-x. 8 hadoop hadoop 4096 Feb 22 06:02 kopf

[hadoop@HadoopSlave1 plugins]$ mkdir ik

[hadoop@HadoopSlave1 plugins]$ pwd

/home/hadoop/app/elasticsearch-2.4.3/plugins

total 12

drwxrwxr-x. 2 hadoop hadoop 4096 Feb 25 06:18 ik

[hadoop@HadoopSlave1 plugins]$ cd ik/

[hadoop@HadoopSlave1 ik]$ pwd

/home/hadoop/app/elasticsearch-2.4.3/plugins/ik

[hadoop@HadoopSlave1 ik]$ rz

[hadoop@HadoopSlave1 ik]$ ll

total 4400

-rw-r--r--. 1 hadoop hadoop 4505518 Jan 15 08:59 elasticsearch-analysis-ik-1.10.3.zip

[hadoop@HadoopSlave1 ik]$

  第九步:關閉es服務程序

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopSlave1 ik]$ jps

1874 Elasticsearch

2078 Jps

[hadoop@HadoopSlave1 ik]$ kill -9 1874

2089 Jps

  第十步:使用unzip指令解壓,如果unzip指令不存在,則安裝:yum install -y unzip。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopSlave1 ik]$ unzip elasticsearch-analysis-ik-1.10.3.zip 

Archive: elasticsearch-analysis-ik-1.10.3.zip

inflating: elasticsearch-analysis-ik-1.10.3.jar 

inflating: httpclient-4.5.2.jar 

inflating: httpcore-4.4.4.jar 

inflating: commons-logging-1.2.jar 

inflating: commons-codec-1.9.jar 

inflating: plugin-descriptor.properties 

creating: config/

creating: config/custom/

inflating: config/custom/ext_stopword.dic 

inflating: config/custom/mydict.dic 

inflating: config/custom/single_word.dic 

inflating: config/custom/single_word_full.dic 

inflating: config/custom/single_word_low_freq.dic 

inflating: config/custom/sougou.dic 

inflating: config/IKAnalyzer.cfg.xml 

inflating: config/main.dic 

inflating: config/preposition.dic 

inflating: config/quantifier.dic 

inflating: config/stopword.dic 

inflating: config/suffix.dic 

inflating: config/surname.dic 

total 5828

-rw-r--r--. 1 hadoop hadoop 263965 Dec 1 2015 commons-codec-1.9.jar

-rw-r--r--. 1 hadoop hadoop 61829 Dec 1 2015 commons-logging-1.2.jar

drwxr-xr-x. 3 hadoop hadoop 4096 Jan 1 12:46 config

-rw-r--r--. 1 hadoop hadoop 55998 Jan 1 13:27 elasticsearch-analysis-ik-1.10.3.jar

-rw-r--r--. 1 hadoop hadoop 4505518 Jan 15 08:59 elasticsearch-analysis-ik-1.10.3.zip

-rw-r--r--. 1 hadoop hadoop 736658 Jan 1 13:26 httpclient-4.5.2.jar

-rw-r--r--. 1 hadoop hadoop 326724 Jan 1 13:07 httpcore-4.4.4.jar

-rw-r--r--. 1 hadoop hadoop 2667 Jan 1 13:27 plugin-descriptor.properties

[hadoop@HadoopSlave1 ik]$ 

   

  同理,其他兩台也是。

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

  第十一步:重新開機三台機器的es服務程序

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞
Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

   其實,若想更具體地,看得,es安裝中文分詞器es-ik之後,的變化情況,直接,在$ES_HOME下,執行bin/elasticsearch。當然,我這裡隻是給你展示下而已,還是用bin/elasticsearch -d在背景啟動吧!

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

   第十二步:測試,安裝了es中文分詞插件es-ik之後的對中文分詞效果

  ik_max_word方式來分詞測試

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"這裡是好記性不如爛筆頭感歎号的部落格園"}'

"token" : "這裡是",

"type" : "CN_WORD",

"token" : "這裡",

"token" : "好記",

"token" : "記性",

"token" : "不如",

"type" : "CN_CHAR",

"token" : "筆頭",

"token" : "感歎号",

"token" : "感歎",

"token" : "歎号",

"token" : "部落格園",

"token" : "部落格",

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"我們是大資料開發技術人員"}'

"token" : "我們",

"token" : "大數",

"token" : "資料",

"token" : "開發",

"token" : "發",

"token" : "技術人員",

"token" : "技術",

"token" : "人員",

    可以看出,成功分詞了且效果更好!

   其實,啊,為什麼“是”沒有了呢?是因為es的中文分詞器插件es-ik的過濾停止詞的貢獻!請移步,如下

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

es官方文檔提供的ik_max_word和ik_smart解釋

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

ik_smart方式來分詞測試

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_smart&pretty=true' -d '{"text":"這裡是好記性不如爛筆頭感歎号的部落格園"}'

Elasticsearch之中文分詞器插件es-ik(部落客推薦)Eclipse下Maven建立項目、自動打依賴jar包(包含普通項目和Web項目)Elasticsearch之IKAnalyzer的過濾停止詞

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_smart&pretty=true' -d '{"text":"我們是大資料開發技術人員"}'

"token" : "大",

本文轉自大資料躺過的坑部落格園部落格,原文連結:http://www.cnblogs.com/zlslch/p/6440373.html,如需轉載請自行聯系原作者