再次學(xué)習(xí)ES--11--6.4Anlysis

ayalysis以往對(duì)于我來說是個(gè)黑盒,并不清楚ES這個(gè)重要組件到底是如何進(jìn)行分析的。屬于知道個(gè)大概,但一深入就很模糊的狀態(tài)。

概述

一種Analyzer?-內(nèi)置或自定義是否-僅僅是包含三個(gè)低級(jí)別構(gòu)建塊包:character filters(字符過濾器), tokenizers(分詞器)和token filters(令牌過濾器)

  • character filters
    首先,字符過濾器接收原始文本字符的流,并且可以通過添加,移除,或改變字符變換流。例如,可以使用字符過濾器將印度語 - 阿拉伯?dāng)?shù)字(0 12345678 9)轉(zhuǎn)換為其阿拉伯語 - 拉丁語等價(jià)物(0123456789),或者<b>從流中刪除HTML元素。
    其次,這個(gè)字符過濾器filter和眾多filter是可以多個(gè)進(jìn)行處理的

  • Tokenizer
    分詞器,接收字符流,并將它分為獨(dú)立的tokens (通常是單詞),如,whitespace只要看到任何空格,tokenizer就會(huì)將文本分成標(biāo)記。它會(huì)將文本 "Quick brown fox!"轉(zhuǎn)換為術(shù)語[Quick, brown, fox!]
    標(biāo)記器還負(fù)責(zé)記錄每個(gè)術(shù)語的順序或位置以及該術(shù)語所代表的原始單詞的開始和結(jié)束字符偏移。

  • Tip:分析器必須只有一個(gè) Tokenizer

  • Token filters
    令牌濾波器接收到令牌流,并且可以添加,刪除或改變令牌。例如,lowercase令牌過濾器將所有令牌轉(zhuǎn)換為小寫, stop令牌過濾器從令牌流中刪除常用詞(停用詞)the, synonym令牌過濾器將同義詞引入令牌流。
    令牌過濾器不會(huì)更改每個(gè)令牌的位置或字符偏移量。

分析器可以具有零個(gè)或多個(gè) 令牌過濾器,這些過濾器按順序應(yīng)用。

  • 所以,除了ES內(nèi)置的analyzer,只要你指定這3項(xiàng)內(nèi)容,你可以定制符合業(yè)務(wù)需要的analyzer

測(cè)試 analyzer

POST _analyze
{
  "tokenizer": "standard",
  "filter":  [ "lowercase" ],
  "text":      "test analyze ok"
}

結(jié)果為

"tokend":[
  {
      "token":"test",
      "start_offset":0,
      "end_offset":4,
      "type":"<ALPHANUM>",
      "position":0
  }
...
]

可以看到,解析后,結(jié)果包含了 token,原文本起始和結(jié)束位置,解析后的相對(duì)位置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容