在es中,一個分詞器通常可以包含三個模版,不論是內置的還是自定義:character filters,tokenizers, token filters.
內置的分析程序會將這些構建塊預先打包到適合不同語言和文本類型的分析程序中。彈性搜索還公開了單個的構建塊,以便將它們組合在一起來定義新的自定義分析程序。
character filters(字符過濾器)
字符篩選器接收原始文本作爲字符流,並通過添加、刪除或更改字符來轉換流,例如,一個字符過濾器可用於將印度阿拉伯數字(٠١٢٣٤٥٦٧٨٩)轉化成阿拉伯數字(0123456789),或者從流中剝離HTML <b>
元素。
分析器可能有零個或多個字符過濾器,這些過濾器是按順序應用的
tokenizers(分詞器)
tokenizer接收一個字符流,將其分解爲單個令牌(通常是單個單詞),並輸出一個令牌流。例如,每當它看到任何空白時,一個空格記號賦予器將文本分解爲令牌。它將把“敏捷的棕色狐狸”改爲“敏捷,棕色,狐狸!”
tokenizer還負責記錄每個術語的順序或位置,以及術語所代表的原始單詞的開始和結束字符偏移量。
一個分析儀必須只有一個記號筆。
token filters(令牌過濾器)
令牌過濾器接收令牌流,並可添加、刪除或更改令牌。例如,一個小寫的令牌過濾器將所有令牌轉換爲小寫,一個停止令牌過濾器刪除了與令牌流相似的普通單詞(停止字),並且一個同義詞令牌過濾器將同義詞引入到令牌流中。
令牌過濾器不允許更改每個令牌的位置或字符偏移量。
一個分析器可能有零個或多個令牌過濾器,它們是按順序應用的。
內置的分析程序可以直接使用,不需要任何配置。但是,其中一些支持配置選項來改變它們的行爲。例如,可以配置標準分析器來支持stop單詞列表。
keep_first_letter 阿莫西林>amxl default: true
keep_separate_first_letter 阿莫西林>a,m,x,l default: false
lowercase lowercase non Chinese letters(小寫非中文字母) default: true
trim_whitespace 剔除空格 default: true
keep_full_pinyin 阿莫西林>[a,mo,xi,lin] default: true
keep_joined_full_pinyin 阿莫西林> [amoxilin] default: false
keep_none_chinese_in_joined_full_pinyin 阿莫西林123>amoxilin123 default: false
none_chinese_pinyin_tokenize amoxilin123jiaonang>a,mo,xi,lin,123,jiao,nang default: true
keep_none_chinese_in_first_letter 阿莫西林AT2018->amxlat2018 default: true
remove_duplicated_term when this option enabled, duplicated term will be removed to save index default: false
limit_first_letter_length set max length of the first_letter result default: 16
keep_original when this option enabled, will keep original input as well default: false