Link Search Menu Expand Document Documentation Menu

分词器

分词器接收一个字符流并将文本拆分为单独的词元。一个词元由一个术语(通常是一个单词)和关于该术语的元数据组成。例如,分词器可以根据空格拆分文本,因此文本 Actions speak louder than words. 变为 [Actions, speak, louder, than, words.]。

分词器的输出是词元流。分词器还维护以下有关词元的元数据

  • 每个词元的顺序位置:此信息用于单词和短语的邻近查询。
  • 词元在文本中的起始和结束位置(偏移量):此信息用于突出显示搜索词条。
  • 词元类型:某些分词器(例如,standard)按类型对词元进行分类,例如 <ALPHANUM><NUM>。更简单的分词器(例如,letter)仅将词元分类为 word 类型。

您可以使用分词器定义自定义分析器。

内置分词器

下表列出了 OpenSearch 提供的内置分词器。

单词分词器

单词分词器将全文解析为单词。

分词器 描述 示例
standard - 在单词边界处将字符串解析为词元
- 移除大部分标点符号
为 OpenSearch 贡献一个全新的 PR 或两个 PR 很有趣!
变为
[It’s, fun, to, contribute, a,brand, new, PR, or, 2, to, OpenSearch]
letter - 在任何非字母字符处将字符串解析为词元
- 移除非字母字符
为 OpenSearch 贡献一个全新的 PR 或两个 PR 很有趣!
变为
[It, s, fun, to, contribute, a,brand, new, PR, or, to, OpenSearch]
lowercase - 在任何非字母字符处将字符串解析为词元
- 移除非字母字符
- 将词条转换为小写
为 OpenSearch 贡献一个全新的 PR 或两个 PR 很有趣!
变为
[it, s, fun, to, contribute, a,brand, new, pr, or, to, opensearch]
whitespace - 在空格字符处将字符串解析为词元 为 OpenSearch 贡献一个全新的 PR 或两个 PR 很有趣!
变为
[It’s, fun, to, contribute, a,brand-new, PR, or, 2, to, OpenSearch!]
uax_url_email - 类似于 standard 分词器
- 与 standard 分词器不同,会将 URL 和电子邮件地址保留为单个词条
为 OpenSearch opensearch-project@github.com 贡献一个全新的 PR 或两个 PR 很有趣!
变为
[It’s, fun, to, contribute, a,brand, new, PR, or, 2, to, OpenSearch, opensearch-project@github.com]
classic - 将字符串解析为词元:
  - 后面跟着空格字符的标点符号
  - 如果词条不包含数字,则按连字符拆分
- 移除标点符号
- 将 URL 和电子邮件地址保留为单个词条
零件号 PA-35234,一次性产品 (128.32)
变为
[Part, number, PA-35234, single, use, product, 128.32]
thai - 将泰语文本解析为词条 สวัสดีและยินดีต
变为
[สวัสด, และ, ยินดี, ]

部分单词分词器

部分单词分词器将文本解析为单词,并生成这些单词的片段以进行部分单词匹配。

分词器 描述 示例
ngram - 在指定字符(例如,标点符号或空格字符)处将字符串解析为单词,并生成每个单词的 n-gram 我的仓库
变为
[M, My, y, y ,  ,  r, r, re, e, ep, p, po, o]
因为默认的 n-gram 长度是 1–2 个字符
edge_ngram - 在指定字符(例如,标点符号或空格字符)处将字符串解析为单词,并生成每个单词的边缘 n-gram(从单词开头开始的 n-gram) 我的仓库
变为
[M, My]
因为默认的 n-gram 长度是 1–2 个字符

结构化文本分词器

结构化文本分词器解析结构化文本,例如标识符、电子邮件地址、路径或邮政编码。

分词器 描述 示例
keyword - 无操作分词器
- 输出整个字符串不变
- 可以与 token 过滤器(例如 lowercase)结合使用来规范化词条
我的仓库
变为
我的仓库
模式 - 使用正则表达式模式在单词分隔符处解析文本为词条,或捕获匹配的文本作为词条
- 使用 Java 正则表达式
https://opensearch.org.cn/forum
变为
[https, opensearch, org, forum],因为默认情况下分词器在单词边界 (\W+) 处拆分词条
可以使用正则表达式模式进行配置
simple_pattern - 使用正则表达式模式返回匹配的文本作为词条
- 使用 Lucene 正则表达式
- 比 pattern 分词器更快,因为它使用了 pattern 分词器正则表达式的一个子集
默认返回一个空数组
必须配置模式,因为模式默认为空字符串
simple_pattern_split - 使用正则表达式模式在匹配处拆分文本,而不是返回匹配项作为词条
- 使用 Lucene 正则表达式
- 比 pattern 分词器更快,因为它使用了 pattern 分词器正则表达式的一个子集
默认无操作
必须配置模式
char_group - 根据一组可配置字符进行解析
- 比运行正则表达式的分词器更快
默认无操作
必须配置字符列表
path_hierarchy - 根据路径分隔符(默认为 /)解析文本,并返回树层次结构中每个组件的完整路径 one/two/three
变为
[one, one/two, one/two/three]
剩余 350 字符

有问题?

想要贡献?