Install IK
源碼地址:https://github.com/medcl/elasticsearch-analysis-ik,git clone下來。
1.compile
mvn package
copy and unzip target/releases/elasticsearch-analysis-ik-{version}.zip
to your-es-root/plugins/ik
2.restart elasticsearch
Tips:
ik_max_word: 會將文本做最細粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,中華人民,中華,華人,人民共和國,人民,人,民,共和國,共和,和,國國,國歌”,會窮盡各種可能的組合;
ik_smart: 會做最粗粒度的拆分,比如會將“中華人民共和國國歌”拆分為“中華人民共和國,國歌”。
Changes
5.0.0
- 移除名為
ik
的analyzer和tokenizer,請分別使用ik_smart
和ik_max_word
IK與Elasticsearch-5.0.0的集成步驟
1.創建索引m8:
PUT 'http://localhost:9200/m8'
2.為索引(m8)及類型(logs)下的字段(message)設置分詞器(分詞器可選ik_smart或ik_max_word):
PUT localhost:9200/m8 -d ' { "settings" : { "analysis" : { "analyzer" : { "ik" : { "tokenizer" : "ik_smart" } } } }, "mappings" : { "logs" : { "dynamic" : true, "properties" : { "message" : { "type" : "string", "analyzer" : "ik_smart" } } } } }'
關於兩種不同分詞的用處以及區別:
2.1.使用方面的不同:
其中我們在做索引的時候,希望能將所有的句子切分的更詳細,以便更好的搜索,所以ik_max_word更多的用在做索引的時候,但是在搜索的時候,對於用戶所輸入的query(查詢)詞,我們可能更希望得比較准確的結果,例如,我們搜索“無花果”的時候,更希望是作為一個詞進行查詢,而不是切分為"無",“花”,“果”三個詞進行結果的召回,因此ik_smart更加常用語對於輸入詞的分析。
2.2.效率方面的不同:
ik_max_word分詞相對來說效率更加迅速,而ik_smart的效率比不上ik_max_word(個人做索引的時候將兩種分詞器進行嘗試得出的結果,有誤的話,望指正)
3.用logstash-5.0.0上傳數據:
logstash -f ../config/input-file.conf
4.測試分詞效果:
POST http://localhost:9200/m8/_analyze?analyzer=ik_smart&text=中文分詞
效果:
5.查詢測試:
GET http://localhost:9200/m8/_search?q=中國
效果: