当前位置: 首页 > news >正文

Elasticsearch:analyzer(分析器)

一、概述

可用于将字符串字段转换为单独的术语:

  • 添加到倒排索引中,以便文档可搜索。
  • 级查询(如 生成搜索词的 match查询)使用。

分析器分为内置分析器和自定义的分析器,它们都是由若干个字符过滤器(character filter)+ 一个分词器(tokenizers)+ 若干个词项过滤器(token filter)组成:
在这里插入图片描述

二、内置分析器和自定义分析器

三、字符过滤器(character filter)

官网:https://www.elastic.co/guide/en/elasticsearch/reference/8.6/analysis-charfilters.html
字符过滤器将原始文本作为字符流接收,并可以通过添加、删除或更改字符来转换该流。例如,字符过滤器可用于将印度-阿拉伯数字 (٠‎١٢٣٤٥٦٧٨‎٩‎) 转换为阿拉伯-拉丁数字 (0123456789),或从流中剥离 HTML 元素。
Elasticsearch 有许多内置的字符过滤器,可用于构建自定义分析器。

1、HTML Strip Character Filter

html_strip会删除像这样的 HTML 元素,并解码像这样的 HTML 实体&。

2、Mapping Character Filter

mapping用指定的替换项替换任何出现的指定字符串。

3、Pattern Replace Character Filter

pattern_replace用指定的替换字符替换任何与正则表达式匹配的字符。

四、分词器(tokenizers)

分词器接收字符流,将其分解为单个标记,然后输出。例如whitespace分词器看到任何空格时都会将文本进行分解,它会将文本由“Quick brown fox!”转换为[Quick, brown, fox!]。
Elasticsearch 有许多内置的标记器,可用于构建 自定义分析器:

  • 面向词的分词器:

    • Standard Tokenizer
      分词器standard根据 Unicode 文本分割算法的定义,按照单词边界将文本划分为术语。它会删除大多数标点符号。它是大多数语言的最佳选择。
    • Letter Tokenizer
      当分词器letter遇到非字母的字符时,它就会将文本分成多个术语。
    • Lowercase Tokenizer
      lowercase类似letter,当遇到非字母的字符时,它会将文本分成多个术语,但它也会将所有术语转换为小写。
    • Whitespace Tokenizer
      whitespace遇到任何空格字符时,它就会将文本分成多个术语。
    • UAX URL Email Tokenizer
      uax_url_email类似于standard,只是它将 URL 和电子邮件地址识别为单个标记。
    • Classic Tokenizer
      classic是一个基于语法的英语标记器。
    • Thai Tokenizer
      thai将泰语文本分割成单词。
  • 部分单词分词器

    • N-Gram Tokenizer
      它首先将文本分解为单词,然后在单词上移动的滑动窗口 - 指定长度的连续字符序列。
    • Edge N-Gram Tokenizer
  • 结构化文本分词器

    • Keyword Tokenizer
      接受给定的任何文本,并输出与单个术语完全相同的文本。它可以与标记过滤器结合使用,例如lowercase规范化分析的术语。
    • Pattern Tokenizer
      pattern使用正则表达式,在文本与单词分隔符匹配时将其拆分为术语,或者将匹配的文本捕获为术语。
    • Simple Pattern Tokenizer
      simple_pattern使用正则表达式捕获匹配的文本作为术语。它使用正则表达式功能的受限子集,并且通常比pattern标记器更快。
    • Char Group Tokenizer
      char_group可通过要拆分的字符集进行配置。
    • Simple Pattern Split Tokenizer
      simple_pattern_split使用与标记器相同的受限正则表达式子集simple_pattern,但在匹配处拆分输入,而不是将匹配项作为术语返回。
    • Path Tokenizer
      path_hierarchy采用类似文件系统路径的分层值,在路径分隔符上进行拆分,并为树中的每个组件发出一个术语,例如/foo/bar/baz→ [/foo, /foo/bar, /foo/bar/baz ]。

五、词项过滤器(token filter)

官网:https://www.elastic.co/guide/en/elasticsearch/reference/8.6/analysis-tokenfilters.html
词项过滤器从分词器接收分词流,并且可以修改词项(例如小写)、删除词项(例如删除停用词)或添加词项(例如同义词)。Elasticsearch有许多内置的词项过滤器,可以使用它来构建自定义分词器:

1、Apostrophe token filter

2、ASCII folding token filter

3、CJK bigram token filter

4、CJK width token filter

5、Classic token filter

6、Common grams token filter


http://www.mrgr.cn/news/81963.html

相关文章:

  • 帝国CMS8.0终极栏目转换或批量改顺序成功后不能返回地址的解决方案
  • 云中漫步:精工细作铸就免费公益刷步平台
  • Unity git版本管理
  • 网站HTTP改成HTTPS
  • SQL BETWEEN 操作符
  • 2024年合肥市科普日小学组市赛第一题题解
  • 工业大数据分析算法实战-day19
  • 学习笔记 --C#基础其他知识点(同步和异步)
  • Hugging Face Dataset的 dataset_info.json 文件详解
  • LoRA微调系列笔记
  • jpeg学习
  • Go语言入门
  • mac系统vsCode中使用Better Comments在.vue文件里失效
  • (一)人工智能其实可以看成是一个函数
  • SOME/IP 协议详解——信息格式
  • Llama系列关键知识总结
  • 012-spring的注解开发、bean的属性、IOC实现原理
  • arcface
  • QT 学习第十四天 QWidget布局
  • SpringBoot对静态资源的映射规则
  • STM32-笔记20-测量按键按下时间
  • 计算机网络期末复习
  • C++ 设计模式
  • BUG分析 - 重启有时失败
  • 预计5.2.1版本的SharedingSphere Hint指定数据库未生效问题
  • 计算机网络500题2024-2025学年度第一学期复习题库(选择、判断、填空)