分析器——無論是內建的還是自定義的——只是一個包,它包含三個較低層次的構建塊:字元過濾器、標記器和標記過濾器。
內建的分析程式將這些構建塊預先打包到適合不同語言和文字型別的分析程式中。Elasticsearch還公開了各個構建塊,以便將它們組合起來定義新的自定義分析程式。
字元過濾器
字元過濾器以字元流的形式接收原始文字,並可以通過新增、刪除或更改字元來轉換字元流。例如,可以使用字元過濾器將印度教-阿拉伯數字(٠١٢٣٤٥٦٧٨٩)轉換為阿拉伯-拉丁數字(0123456789),或者從流中去除像<b>
這樣的HTML元素。
分析器可以有零個或多個字元過濾器,它們是按順序應用的.
標記器
標記器接收字元流,將其分解為單個標記(通常是單個單詞),並輸出標記流。例如,只要看到任何空白,空白標記器就會將文字分割為標記。它會將文字Quick brown fox!
轉換成術語[Quick,Brown,fox!]
。
標記化器還負責記錄每個術語的順序或位置,以及該術語所代表的原始單詞的開始和結束字元偏移量。
一個分析器必須只能有一個標記賦予器。
標記過濾器
令牌過濾器接收令牌流,並可以新增、刪除或更改令牌。例如,小寫令牌過濾器將所有令牌轉換為小寫,停止令牌過濾器從令牌流中刪除常用單詞(停the
),同義詞令牌過濾器將同義詞引入令牌流。
牌過濾器不允許更改每個令牌的位置或字元偏移量.
分析器可以有零個或多個令牌過濾器,它們是按順序應用的
本作品採用《CC 協議》,轉載必須註明作者和本文連結