Elasticsearch Analyzer(分析器)详解
Java学习讨论群:725562382一、Analyzer(分析器)概述无论是内置的分析器(analyzer),还是自定义的分析器(analyzer),都由三种构件块组成:character filters(字符过滤器)、tokenizers(分词器)、token filters(token过滤器)。内置的analyzer将这些构建块预先打包到适合不同语言和文本类型的analyzer中。1.1 Character Filters(字符过滤器)字符过滤器以字符流的形式接收原始文本,并可以通过添加、删除或更改字符来转换该流。举例来说,一个字符过滤器可以用来把阿拉伯数字(٠‎١٢٣٤٥٦٧٨‎٩)‎转成成Arabic-Latin的等价物(0123456789)。一个分析器可能有0个或多个字符过滤器,它们按顺序应用。PS:类似Servlet中的过滤器,或者拦截器,想象一下有一个过滤器链1.2 Tokenizer(分词器)一个分词器接收一个字符流,并将其拆分成单个token(通常是单个单词),并输出一个token流。例如,一个whitespace分词器当它看到空白的时候就会将文本拆分成token。它会将文本"Qu