Analysis 与 Analyzer
- Analysis 文本分析就是把全文转换为一些列单词的过程,也叫分词
- Analysis 是通过 Analyzer 来实现的
- 可使用Elasticsearch 内置的分析器 或者按需定制分析器
- 除了在数据写入时转换词条,匹配Query语句的时候也需要用相同的分析器对查询语句进行分析
Analyzer的组成
无论是内建的还是自定义的都是一个包,且包含了character filters
、tokenizers
,和token filters
3个部分。
-
Character filters(字符过滤器):字符过滤器以字符流的形式接收原始文本,并可以通过添加、删除或更改字符来转换流。 例如,字符过滤器可用于将印度-阿拉伯数字 (٠ ١٢٣٤٥٦٧٨ ٩ ) 转换为它们的阿拉伯-拉丁数字 (0123456789),或从流中去除
<b>
等 HTML 元素。分析器可能有零个或多个字符过滤器,它们按顺序应用。
-
Tokenizer(分词器):分词器接收字符流,将其分解为单独的标记(通常是单个单词),然后输出标记流。 例如,空格标记器在看到任何空格时将文本分解为标记。 它会转换文本“Quick brown fox!”为Terms [Quick,brown,fox!]。
分词器还负责记录Term的顺序或位置以及原始单词的开始和结束字符偏移量。
一个分析器必须只有一个分词器
-
To