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