什么是 Analysis
Analysis 是指对全文本(Full Text)进行分词,以便生成供搜索用的倒排索引。
这个过程是由 analyzer(分析器、分词器) 来完成的。
分词器(Analyzer)
分词器主要包含三个组成部分。
- Character Filter
- Tokenizer
- Filter
字符过滤器(Character Filter) : 文本字符串首先会经过字符过滤器的预处理,过滤掉无用的字符(如 HTML 标记),将 "&" 转换为 "and" 等。
分词器(Tokenizer) : 能够将字符串拆分为一个个独立的 token 或 term(词条)。
过滤器(Filter) : 经过分词器处理后的一系列 token ,可以由过滤器再次进行处理。比如,修改 token(转换为小写)、删除无用的 token(如 the)、增加同义词等等。
Tokenizer
Tokenizer 是 Analyzer 最重要的组成部分。
Elasticsearch 中有很多内置的 Tokenizer,我们可以用它来创建自定义的 Analyzer。
这些内置的 Tokenizer,可以分为三大类:
- 单词分词器
- 局部单词分词器
- 结构化文本分词器
单词分词器
单词分词器(Word Tokenizer)主要用于将全文本拆分为独立的单词。
单词分词器主要包含以下几种:
- Standard Tokenizer(标准分词器):基于单词边界将文本拆分为独立的项,它会删除大多数标点符号。
- Letter Tokenizer(字母分词器):拆分文本时,如果遇到非字母就进行拆分。
- Lowercase Tokenizer(小写字母分词器):和字母分词器类似,它还会将拆分后的项转化为小写字母。
- Whitespace Tokenizer(空格分词器):顾名思义,拆分文本时,如果遇到任何空格就进行拆分。
- UAX URL Email Tokenizer(URL & Email分词器):和标准分词器类似,它还可以对 URL 和 Email 进行拆分。
- Classic Tokenizer(经典分词器&#