ES分詞器種類
- 常見的分詞器,如Standard分詞器、Simple分詞器、Whitespace分詞器、IK分詞等,還支持自定義分詞器(比如一些小國家的語言需要自定義分詞器)
- ES默認(rèn)就是Standard分詞器
分詞器在分詞時的過程
- 標(biāo)記化:分詞器第一步是將文本拆分成單個標(biāo)記(tokens), 就是單個的單詞或中文詞組,這個標(biāo)記可以是單詞,數(shù)組,特殊字符,中文詞語等。 此時會包含一些分隔符,標(biāo)點(diǎn),停用詞等,并非最終形態(tài)的分詞。
- 過濾:對第一步分出來的所有標(biāo)記進(jìn)行過濾操作,比如大小寫轉(zhuǎn)換,去除停用詞,去掉分隔符標(biāo)點(diǎn)等操作,形成最終形態(tài)的分詞集
- 倒排索引:分詞完成后,ES會創(chuàng)建倒排索引來存儲這些分詞, 倒排索引是一種數(shù)據(jù)結(jié)構(gòu),通過倒排索引,把分詞和文檔document(即原始文本)建立起映射關(guān)系,當(dāng)搜索某個分詞的時候,就會將映射到的文檔進(jìn)行返回。
- 查詢匹配:查詢時我們輸入的文本內(nèi)容,也會在ES進(jìn)行分詞處理,將搜索內(nèi)容分詞后,拿著分詞去倒排索引中進(jìn)行查詢,把匹配到的分詞對應(yīng)的映射document進(jìn)行返回。
Standard分詞器的規(guī)則
- 標(biāo)點(diǎn)符號切分:如果文本中含有標(biāo)點(diǎn)符號,那么會根據(jù)標(biāo)點(diǎn)符號進(jìn)行拆分,比如apple,peach,food。那么拆分結(jié)果就是[apple 和 peach 和 food]這3個,會根據(jù)逗號拆分
- 詞分割: 即按照空格進(jìn)行拆分, 比如: my name is hbz, 拆分結(jié)果就是[my 和 name 和 is 和 hbz]這4個詞拆成獨(dú)立的分詞
- 小寫轉(zhuǎn)換:即會將文本中的大小寫全部轉(zhuǎn)成小寫, 比如Hellow World, 則拆分結(jié)果就是[hellow 和 world], 首字母的H,W都會轉(zhuǎn)成小寫的h, w
- 停用詞過濾: 過濾掉無效的單詞,比如a, an, the這種連接詞,這些詞本身沒啥意義,做分詞的時候Standard分詞器會將這些排除
- 詞干提取:將單詞還原成原始形態(tài), 比如 running–>run, swimming–>swid, going–>go, jumped–>jump
- ==注意:以上這5個特點(diǎn)是同時生效的,即一段文本會按照這5中規(guī)則進(jìn)行分詞,最終結(jié)果一定是符合這5中規(guī)則的。 ==
如何查看ES分詞存儲效果?
GET /索引名稱/_analyze
GET /_index/_analyze
{
"analyzer": "分詞器名稱",
"field": "字段名稱"
"text": "待分析的文本"
}
案例:文章來源地址http://www.zghlxwxcb.cn/news/detail-735824.html
#字段是text類型
POST /my_index/_analyze
{
"field": "title",
"text": "This is some text to analyze"
}
#字段是text類型
POST /my_index/_analyze
{
"field": "title",
"text": "今天學(xué)習(xí)了編程知識"
}
#字段是keyword類型(keyword是精確匹配,所以不會進(jìn)行分詞,This is some text to analyze作為一個完整體)
POST /my_index/_analyze
{
"field": "tags",
"text": "This is some text to analyze"
}
#字段是keyword類型(這是數(shù)組的keyword,會將數(shù)組的每個元素進(jìn)行分離出來,但每個元素不會再進(jìn)行分詞了,即結(jié)果就是This is, java, Spring Boot。大小寫也不會轉(zhuǎn)換,因?yàn)楦緵]走分詞器)
POST /my_index/_analyze
{
"field": "tags",
"text": ["This is","java","Spring Boot" ]
}
文章來源:http://www.zghlxwxcb.cn/news/detail-735824.html
到了這里,關(guān)于【HBZ分享】ES分詞器的拆分規(guī)則 及 算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!