Elasticsearch安裝IK分詞器


安裝方式大概分為兩種:

  1. 自行編譯;
  2. 使用elasticsearch-rtf版,利用別人編譯好的文件進行安裝;

環境說明:

我下載的es版本是:elasticsearch-1.7.4.tar.gz,這里我是用的ik版本是elasticsearch-rtf-1.0.0.zip解壓后得到的elasticsearch-analysis-ik-1.2.6.jar文件。

方式一:自行編譯

自行編譯的步驟如下:

1.到https://github.com/medcl/elasticsearch-analysis-ik頁面下載elasticsearch-analysis-ik-x.x.x.zip壓縮包;
2.解壓elasticsearch-analysis-ik-x.x.x.zip,然后進行elasticsearch-analysis-ik-x.x.x目錄;
3.使用maven進行打包,得到elasticsearch-analysis-ik-x.x.x.jar(然而我並不會使用maven進行打包,所以我沒用這種方式);
4.進行elasticsearch-1.7.4/plugins目錄,創建目錄analysis-ik,並把你編譯好的elasticsearch-analysis-ik-x.x.x.jar放置到此目錄;
5.將你下載的elasticsearch-analysis-ik-x.x.x.zip解壓后的config目錄下的ik目錄復制到elasticsearch-1.7.4/config目錄;
6.配置elasticsearch-1.7.4/config目錄下的elasticsearch.yml文件,在文件尾部加入如下代碼:

index:  
analysis
:
analyzer
:
ik
:
alias
: [ik_analyzer]
type
: org.elasticsearch.index.analysis.IkAnalyzerProvider
ik_max_word
:
type
: ik
use_smart
: false
ik_smart
:
type
: ik
use_smart
: true

或簡單配置:

index.analysis.analyzer.ik.type : "ik"

7.重新啟動es;

方式二:使用elasticsearch-rtf版,利用別人編譯好的文件進行安裝

我使用的就是這種方式,第一種方式我並沒有進行測試,所以暫時不保證正確,着重說明一下第二種方式,步驟如下:

1.到這里https://github.com/medcl/elasticsearch-rtf/releases下載rtf版的es,我下載的是elasticsearch-rtf-1.0.0.zip;
2.解壓elasticsearch-rtf-1.0.0.zip壓縮包;
3.將elasticsearch-rtf-1.0.0/plugins/analysis-ik目錄,復制到elasticsearch-1.7.4/plugins得到elasticsearch-1.7.4/plugins/analysis-ik;
4.將elasticsearch-rtf-1.0.0/config/ik復制到elasticsearch-1.7.4/config/得到elasticsearch-1.7.4/config/ik;
5.編輯elasticsearch-1.7.4/config/elasticsearch.yml文件,在文件尾部加入以下內容:

index:  
analysis
:
analyzer
:
ik
:
alias
: [ik_analyzer]
type
: org.elasticsearch.index.analysis.IkAnalyzerProvider
ik_max_word
:
type
: ik
use_smart
: false
ik_smart
:
type
: ik
use_smart
: true

或簡單配置:

index.analysis.analyzer.ik.type : "ik"

6.重新啟動es;

測試(我在第二種安裝方式下進行的測試)

創建索引:

curl -XPUT http://localhost:9200/index

創建映射:

curl -XPOST http://localhost:9200/index/fulltext/_mapping -d'
{
"fulltext": {
"_all": {
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"term_vector": "no",
"store": "false"
},
"properties": {
"content": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"include_in_all": "true",
"boost": 8
}
}
}
}'

為索引添加一些內容:

curl -XPOST http://localhost:9200/index/fulltext/1 -d'
{"content":"美國留給伊拉克的是個爛攤子嗎"}
'

curl
-XPOST http://localhost:9200/index/fulltext/2 -d'
{"content":"公安部:各地校車將享最高路權"}
'

curl
-XPOST http://localhost:9200/index/fulltext/3 -d'
{"content":"中韓漁警沖突調查:韓警平均每天扣1艘中國漁船"}
'

curl
-XPOST http://localhost:9200/index/fulltext/4 -d'
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}
'

進行高亮查詢:

curl -XPOST http://localhost:9200/index/fulltext/_search  -d'
{
"query" : { "term" : { "content" : "中國" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'

查詢結果:

{"took":31,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":0.61370564,"hits":[{"_index":"index","_type":"fulltext","_id":"4","_score":0.61370564,"_source":
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}
,"highlight":{"content":["<tag1>中國</tag1>駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"]}},{"_index":"index","_type":"fulltext","_id":"3","_score":0.61370564,"_source":
{"content":"中韓漁警沖突調查:韓警平均每天扣1艘中國漁船"}
,"highlight":{"content":["中韓漁警沖突調查:韓警平均每天扣1艘<tag1>中國</tag1>漁船"]}}]}}

或者你可以直接在瀏覽器地址欄進行測試:http://localhost:9200/index/_analyze?analyzer=ik&pretty=true&text=%E6%88%91%E6%98%AF%E4%B8%AD%E5%9B%BD%E4%BA%BA

注意:如果你的版本不對應,可能會出現如下錯誤:

{"error":"IndexCreationException[[index] failed to create index]; nested: ElasticsearchIllegalArgumentException[failed to find analyzer type [ik] or tokenizer for [ik_max_word]]; nested: NoClassSettingsException[Failed to load class setting [type] with value [ik]]; nested: ClassNotFoundException[org.elasticsearch.index.analysis.ik.IkAnalyzerProvider]; ","status":400}

參考文章:

1.http://samchu.logdown.com/posts/277928-elasticsearch-chinese-word-segmentation;
2.https://github.com/medcl/elasticsearch-analysis-ik;


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com