分词器参考

编辑

分词器接收字符流,将其分解成单个的词元(通常是单个单词),并输出一个词元流。例如,whitespace 分词器会在遇到任何空格时将文本分解成词元。它会将文本 "Quick brown fox!" 转换成词条 [Quick, brown, fox!]

分词器还负责记录以下内容:

  • 每个词条的顺序或位置(用于短语和词语邻近查询)
  • 表示该词条的原始单词的起始和结束字符偏移量(用于突出显示搜索片段)。
  • 词元类型,对生成的每个词条的分类,例如 <ALPHANUM><HANGUL><NUM>。更简单的分析器只产生 word 词元类型。

Elasticsearch 有许多内置的分词器,可用于构建自定义分析器

面向单词的分词器

编辑

以下分词器通常用于将全文分解成单个单词:

标准分词器
standard 分词器根据 Unicode 文本分割算法定义的单词边界将文本分割成词条。它会移除大多数标点符号。对于大多数语言来说,它是最佳选择。
字母分词器
letter 分词器会在遇到非字母字符时将文本分割成词条。
小写分词器
lowercase 分词器与 letter 分词器类似,会在遇到非字母字符时将文本分割成词条,但它还会将所有词条小写。
空格分词器
whitespace 分词器会在遇到任何空格字符时将文本分割成词条。
UAX URL 电子邮件分词器
uax_url_email 分词器类似于 standard 分词器,但它会将 URL 和电子邮件地址识别为单个词元。
经典分词器
classic 分词器是针对英语的基于语法的分词器。
泰语分词器
thai 分词器将泰文文本分割成单词。

部分单词分词器

编辑

这些分词器将文本或单词分解成小的片段,用于部分单词匹配:

N 元分词器
ngram 分词器在遇到任何指定的字符列表(例如空格或标点符号)时可以将文本分解成单词,然后返回每个单词的 N 元语法:连续字母的滑动窗口,例如 quick[qu, ui, ic, ck]
边缘 N 元分词器
edge_ngram 分词器在遇到任何指定的字符列表(例如空格或标点符号)时可以将文本分解成单词,然后返回每个单词的 N 元语法,这些语法与单词的开头相连,例如 quick[q, qu, qui, quic, quick]

结构化文本分词器

编辑

以下分词器通常用于结构化文本(如标识符、电子邮件地址、邮政编码和路径),而不是用于全文:

关键字分词器
keyword 分词器是一个“空操作”分词器,它接受任何给定的文本,并将完全相同的文本作为单个词元输出。它可以与像 lowercase 这样的词元过滤器结合使用,以规范化已分析的词条。
模式分词器
pattern 分词器使用正则表达式在匹配单词分隔符时将文本分割成词条,或者将匹配的文本捕获为词条。
简单模式分词器
simple_pattern 分词器使用正则表达式的受限子集来捕获匹配的文本作为词条。它使用正则表达式的受限子集,通常比 pattern 分词器更快。
字符组分词器
char_group 分词器可以通过要分割的字符集进行配置,这通常比运行正则表达式更经济。
简单模式分割分词器
simple_pattern_split 分词器使用与 simple_pattern 分词器相同的受限正则表达式子集,但在匹配处分割输入,而不是将匹配项作为词条返回。
路径分词器
path_hierarchy 分词器采用类似文件系统路径的分层值,在路径分隔符处分割,并为树中的每个组件发出一个词条,例如 /foo/bar/baz[/foo, /foo/bar, /foo/bar/baz ]