analysis
分析是將文本 text 轉化爲 token 或 term 的過程。token 或 term 隨後被添加至倒排索引(inverted index)用於檢索。分析(analysis)過程是由分詞器(analyzer)來完成的,分詞器包括內置(built-in)分詞器和自定義(cutsom)分詞器。
分析(analysis)可以在以下兩種情況下發生:
- index time
- search time
analyzer (分詞器)
一個分詞器由以下三部分組成,內置分詞器主要是爲了適應特定語言和文本類型,打包了不同組合的組件,組成了若干種預置分詞器。以下組件還能單獨暴露,自由組合成自定義分詞器。
-
character filters
- 以字符流的形式接收原始文本,增加、刪除或修改字符,例如:剝離html標籤,轉換 (٠١٢٣٤٥٦٧٨٩) 爲阿拉伯數字 (0123456789) 等。
- 一個分詞器可以包含0到多個character filters
- tokenizers
- 以字符流的形式接收文本,將它拆分成單個的 token (英文單詞、中文單字或詞語),輸出 token stream (分詞流)。
- tokenizer 還負責記錄每個分詞的位置順序,每個分詞的首末字母的偏移量(offsets)
- 一個分詞器有且僅有一個 tokenizer
- token filters
- 以 token stream (分詞流)的形式接收文本,增加、刪除或修改分詞,例如:單詞大寫轉爲小寫,去除英文停用詞 the,同義詞 synonym 替換等操作
- token filter 不修改分詞的位置(position)和字符偏移量(character offsets)
- 一個分詞器可以包含0到多個token filters