IK分词器应用
本篇博客的主要目的是介紹IK分詞器與ES的集成使用.
IKAnalyzer是一個開源的,基于java語言開發(fā)的輕量級的中文分詞工具包。從2006年12月推出1.0版開始,IKAnalyzer已經(jīng)推出 了3個大版本。最初,它是以開源項目Lucene為應(yīng)用主體的,結(jié)合詞
典分詞和文法分析算法的中文分詞組件。新版本的IKAnalyzer3.0則發(fā)展為 面向Java的公用分詞組件,獨(dú)立于Lucene項目,同時提供了對Lucene的默認(rèn)優(yōu)化實(shí)現(xiàn)。
IK分詞器3.0的特性如下:
1)采用了特有的“正向迭代最細(xì)粒度切分算法“,具有60萬字/秒的高速處理能力。
2)采用了多子處理器分析模式,支持:英文字母(IP地址、Email、URL)、數(shù)字(日期,常用中文數(shù)量詞,羅馬數(shù)字,科學(xué)計數(shù)法),中文詞匯(姓名、地名處理)等分詞處理。
3)對中英聯(lián)合支持不是很好,在這方面的處理比較麻煩.需再做一次查詢,同時是支持個人詞條的優(yōu)化的詞典存儲,更小的內(nèi)存占用。
4)支持用戶詞典擴(kuò)展定義。 5)針對Lucene全文檢索優(yōu)化的查詢分析器IKQueryParser;采用歧義分析算法優(yōu)化查詢關(guān)鍵字的搜索排列組合,能極大的提高Lucene檢索的命中率。
IK分詞器搭建
https://www.cnblogs.com/sjfxwj/p/14547402.html
IK分詞器測試使用
IK提供了兩個分詞算法ik_smart 和 ik_max_word,其中 ik_smart 為最少切分,ik_max_word為最細(xì)粒度劃分。
ik_max_word
輸入數(shù)據(jù):
curl -XGET “http://192.168.140.101:9200/_analyze?pretty” -H ‘Content-Type: application/json’ -d’
{
“text”:“聯(lián)想是全球最大的筆記本廠商”,“tokenizer”: “ik_max_word”
}’
運(yùn)行結(jié)果:
[root@s101 /usr/local/software/elasticsearch-head]#curl -XGET “http://192.168.140.101:9200/_analyze?pretty” -H ‘Content-Type: application/json’ -d’
{
“text”:“聯(lián)想是全球最大的筆記本廠商”,“tokenizer”: “ik_max_word”
}’
{
“tokens” : [
{
“token” : “聯(lián)想”,
“start_offset” : 0,
“end_offset” : 2,
“type” : “CN_WORD”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 2,
“end_offset” : 3,
“type” : “CN_CHAR”,
“position” : 1
},
{
“token” : “全球”,
“start_offset” : 3,
“end_offset” : 5,
“type” : “CN_WORD”,
“position” : 2
},
{
“token” : “最大”,
“start_offset” : 5,
“end_offset” : 7,
“type” : “CN_WORD”,
“position” : 3
},
{
“token” : “的”,
“start_offset” : 7,
“end_offset” : 8,
“type” : “CN_CHAR”,
“position” : 4
},
{
“token” : “筆記本”,
“start_offset” : 8,
“end_offset” : 11,
“type” : “CN_WORD”,
“position” : 5
},
{
“token” : “筆記”,
“start_offset” : 8,
“end_offset” : 10,
“type” : “CN_WORD”,
“position” : 6
},
{
“token” : “本廠”,
“start_offset” : 10,
“end_offset” : 12,
“type” : “CN_WORD”,
“position” : 7
},
{
“token” : “本”,
“start_offset” : 10,
“end_offset” : 11,
“type” : “CN_CHAR”,
“position” : 8
},
{
“token” : “廠商”,
“start_offset” : 11,
“end_offset” : 13,
“type” : “CN_WORD”,
“position” : 9
}
]
}
輸入數(shù)據(jù):
curl -XGET “http://192.168.140.101:9200/_analyze?pretty” -H ‘Content-Type: application/json’ -d’
{
“text”:“聯(lián)想是全球最大的筆記本廠商”,“tokenizer”: “ik_smart”
}’
運(yùn)行結(jié)果:
[root@s101 /usr/local/software/elasticsearch-head]#curl -XGET “http://192.168.140.101:9200/_analyze?pretty” -H ‘Content-Type: application/json’ -d’
{
“text”:“聯(lián)想是全球最大的筆記本廠商”,“tokenizer”: “ik_smart”
}’
{
“tokens” : [
{
“token” : “聯(lián)想”,
“start_offset” : 0,
“end_offset” : 2,
“type” : “CN_WORD”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 2,
“end_offset” : 3,
“type” : “CN_CHAR”,
“position” : 1
},
{
“token” : “全球”,
“start_offset” : 3,
“end_offset” : 5,
“type” : “CN_WORD”,
“position” : 2
},
{
“token” : “最大”,
“start_offset” : 5,
“end_offset” : 7,
“type” : “CN_WORD”,
“position” : 3
},
{
“token” : “的”,
“start_offset” : 7,
“end_offset” : 8,
“type” : “CN_CHAR”,
“position” : 4
},
{
“token” : “筆記本”,
“start_offset” : 8,
“end_offset” : 11,
“type” : “CN_WORD”,
“position” : 5
},
{
“token” : “廠商”,
“start_offset” : 11,
“end_offset” : 13,
“type” : “CN_WORD”,
“position” : 6
}
]
}
我們先創(chuàng)建索引:
curl -XPUT ‘http://192.168.140.101:9200/blog?pretty’
curl -H “Content-Type: application/json” -XPUT http://192.168.140.101:9200/blog/article/_mapping -d ‘{
“properties”: {
“id”: {
“type”: “l(fā)ong”,
“store”: true,
“index”: false
},
“title”: {
“type”: “text”,
“store”: true,
“index”: true,
“analyzer”: “ik_smart”
},
“content”: {
“type”: “text”,
“store”: true,
“index”: true,
“analyzer”: “ik_smart”
}
}
}’
隨后我們向該索引當(dāng)中插入三條數(shù)據(jù):
curl -H “Content-Type: application/json” -XPUT ‘http://192.168.140.101:9200/blog/article/1?pretty’ -d ‘{
“id”: 1,
“title”:“明日起70歲退休時代來臨 日本終于邁出這一步”,
“content”:“辛巴復(fù)出直播當(dāng)天周圍路被封了 街道回應(yīng)”
}’
curl -H “Content-Type: application/json” -XPUT ‘http://192.168.140.101:9200/blog/article/2?pretty’ -d ‘{
“id”: 2,
“title”:“海南省市場監(jiān)管局對椰樹涉嫌違法廣告進(jìn)行立案調(diào)查”,
“content”:“小米官宣造車 “賭”上全部的雷軍這次會贏嗎?”
}’
curl -H “Content-Type: application/json” -XPUT ‘http://192.168.140.101:9200/blog/article/3?pretty’ -d ‘{
“id”: 3,
“title”:“韓國禁止對朝發(fā)傳單 卻被美國列為重大人權(quán)問題”,
“content”:“辛巴復(fù)出直播當(dāng)天周圍路被封了 街道回應(yīng)”
}’
運(yùn)行結(jié)果:
查詢文檔方式2-term關(guān)鍵詞在倒排索引當(dāng)中進(jìn)行查詢(關(guān)鍵詞不分詞):
curl -H “Content-Type: application/json” -XGET ‘http://192.168.140.101:9200/blog/article/_search/?pretty’ -d ‘{
“query”: {
“term”: {
“title”: “明日”
}
}
}’
運(yùn)行結(jié)果:
[root@s101 /usr/local/software/elasticsearch-head]#curl -H “Content-Type: application/json” -XGET ‘http://192.168.140.101:9200/blog/article/_search/?pretty’ -d '{
"query": {"term": {"title": "明日"} }}’
{
“took” : 25,
“timed_out” : false,
“_shards” : {
“total” : 5,
“successful” : 5,
“skipped” : 0,
“failed” : 0
},
“hits” : {
“total” : 1,
“max_score” : 0.2876821,
“hits” : [
{
“_index” : “blog”,
“_type” : “article”,
“_id” : “1”,
“_score” : 0.2876821,
“_source” : {
“id” : 1,
“title” : “明日起70歲退休時代來臨 日本終于邁出這一步”,
“content” : “辛巴復(fù)出直播當(dāng)天周圍路被封了 街道回應(yīng)”
}
}
]
}
}
查詢文檔方式3-使用query_string字符串進(jìn)行分析查詢(字符串–>分詞器分詞–>分詞的結(jié)果在倒排索引當(dāng)中進(jìn)行查詢):
curl -H “Content-Type: application/json” -XGET ‘http://192.168.140.101:9200/blog/article/_search/?pretty’ -d ‘{
“query”: {
“query_string”: {
“default_field”: “title”,
“query”: “日本和美國”
}
}
}’
運(yùn)行結(jié)果:
[root@s101 /usr/local/software/elasticsearch-head]#curl -H “Content-Type: application/json” -XGET ‘http://192.168.140.101:9200/blog/article/_search/?pretty’ -d '{
"query": {"query_string": {"default_field": "title","query": "日本和美國"} }}’
{
“took” : 9,
“timed_out” : false,
“_shards” : {
“total” : 5,
“successful” : 5,
“skipped” : 0,
“failed” : 0
},
“hits” : {
“total” : 2,
“max_score” : 0.2876821,
“hits” : [
{
“_index” : “blog”,
“_type” : “article”,
“_id” : “1”,
“_score” : 0.2876821,
“_source” : {
“id” : 1,
“title” : “明日起70歲退休時代來臨 日本終于邁出這一步”,
“content” : “辛巴復(fù)出直播當(dāng)天周圍路被封了 街道回應(yīng)”
}
},
{
“_index” : “blog”,
“_type” : “article”,
“_id” : “3”,
“_score” : 0.2876821,
“_source” : {
“id” : 3,
“title” : “韓國禁止對朝發(fā)傳單 卻被美國列為重大人權(quán)問題”,
“content” : “辛巴復(fù)出直播當(dāng)天周圍路被封了 街道回應(yīng)”
}
}
]
}
}
總結(jié)
- 上一篇: 车间生产能耗管控方案_SAREN三仁净化
- 下一篇: Lock锁实现多线程卖票