分词器参考

编辑

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

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

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

Elasticsearch 提供了许多内置分词器,可用于构建 自定义分析器

面向单词的分词器

编辑

以下分词器通常用于将全文分词为单个单词

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

部分单词分词器

编辑

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

N-Gram 分词器
ngram 分词器可以在遇到任何指定字符列表(例如,空格或标点符号)时将文本分解为单词,然后返回每个单词的 n-gram:连续字母的滑动窗口,例如 quick[qu, ui, ic, ck]
Edge N-Gram 分词器
edge_ngram 分词器可以在遇到任何指定字符列表(例如,空格或标点符号)时将文本分解为单词,然后返回每个单词的 n-gram,这些 n-gram 锚定到单词的开头,例如 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 ]