6.X elasticsearch实战学习笔记_分析器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43707160/article/details/100073913

分析器

ps: Analysis 是将文本转化为tokens(标记)或terms(术语)的过程。tokens和terms被添加到倒排索引中,用于搜索。
ps:分析由分析器执行,分析器可以是内部分析器,也可按索引定义的自定义分析器。

  1. 索引时分析
  • 指定索引的analyzer
    在这里插入图片描述
  1. 搜索时分析器
  • 在类似match query 的全文搜索时,该类分析器将查询字符串的文本转为term,会将同一分析器应用于查询字符串、文本
  • 指定查询时分析器
    1. 通常在索引和搜索时,应使用相同的分析器

分析器架构

  1. 一个分析器包含三个较底层构建块的包:character filters(字符过滤器)、tokenizers(分词器)、token filters(标记过滤器)
  2. 内置分析器将这些构建块先打包成适合不同语言、文本类型的分析器
  • character filter: 将原始文本作为字符流接受,可通过增删改字符来转换流【character filter可有0到多个,按顺序应用】
  • Tokenizer: 接收字符流,将其分解为单个token,并输出token流【tokenizer还负责记录每个term的顺序和位置以及该term所代表的原始单词的开始和结束的字符偏移量,Tokenizer有且只能有一个】
  • Token filter:token filter 接收token流,可增删改token【token filter 不允许更改每个token的位置和字符偏移量,可有0个或多个token filer,按顺序应用】

测试分析器

POST _analyze
  1. Positions and ccharacter offsets
    分析器将单词转为term,记录term的顺序或相对位置,原始文本中每个term的开始结束字符偏移量(用作高亮显示搜索片段)
    在指定索引上 可以引用自定义分析器
    在这里插入图片描述

内置分析器

  1. 内置分析其不需配置即可使用,一些分析器支持配置选项以改变其行为,ex:standard 分析器可配置停用词
    在这里插入图片描述
  2. standard 分析器
  • 构成:
    1. tokenizer:Standard Tokenizer
    1. token filters: Standard Token Filter、Lower Case Token Filter、Stop Token Filter(默认禁用)
  • 通常添加token filters 进行修改
  1. Simple Analyzer
  • simple analyzer 将文本分割为terms,所有的term都是小写
  • 该分析器不可配置
  • 构成:
    1. Tokenizer: Lower Case Tokenizer
  1. Whitespace 分析器
  • whitespace分析器在遇到空格字符时将文本转换为terms
  • 不可配置
  • 构成:
    1. Whitespace Tokenizer
  1. Stop Analyzer
  • 与simple分析器相同,但增加了删除停用词,默认使用_english_停用词
  • 配置参数:
    1. stopwords: 预定义的停用词列表
    1. stopwords_path:停用词文件的路径,是elasticsearch 的config目录的相对路径
  • 构成:
    1. Tokenizer: Lower Case Tokenizer
    1. Token filters: Stop Token Filter
  1. keyword Analyzer
  • keyword分析器是一个noop分析器,将整个输入字符作为单个token返回
  • 无配置参数
  • 构成:
    1. Tokenizer: Keyword Tokenizer
  1. Pattern Analyzer
  • pattern分析器使用正则表达式将文本分隔为terms,正则表达式匹配token separators ,不是token本身,正则默认为\W+
  • 配置参数
    1. pattern: java正则表达式,默认为\W+
    1. flags: java正则表达式flags,flags 用管道符分割
    1. lowercase:terms是否小写,默认为true
    1. stopwords: 预定义的停用词列表
    1. stopwords_path
  • 构成:
    1. Tokenizer : Pattern Tokenizer
    1. Tokenizer Filters: Lower Case Token Filter 、Stop Token Filter(默认禁用)

自定义分析器

  1. 可创建的自定义分析器构成:
  • 0或多个character filters
  • 1个tokenizer
  • 0或多个token filters
  1. 配置:
  • tokenizer: 必选,内置的或自定义的tokenizer
  • char_filter: 可选,内置或自定义的character filters数组
  • filter : 可选参数,内置或自定义的token filters
  • position_increment_gap: 当索引文本数组的值时,es会在一个值的最后一个term和下一个值的第一个term中插入一个虚假间隙,确保短语查询不会匹配两个不同元素的term

猜你喜欢

转载自blog.csdn.net/weixin_43707160/article/details/100073913
今日推荐