什么是 Elasticsearch 的 Tokenizer?如何使用它?

Sherwin.Wei Lv8

什么是 Elasticsearch 的 Tokenizer?如何使用它?

回答重点

Elasticsearch 的 Tokenizer 是文本分析过程中用于将输入文本划分成单独词元(term)的组件。词元是被索引和搜索的基本单位。Tokenizer 是在分析链中第一个被调用的组件,负责将输入文本(如一段句子)分割成一个个基本的词语或符号,以便后续的分析器进行进一步的处理,比如滤词和规范化处理。

你可以在定义自定义分析器时指定特定的 Tokenizer。Elasticsearch 提供了许多内置的 Tokenizer,例如:standard(标准分词器)、whitespace(空白分词器)、keyword(关键词分词器)等。

为了使用 Tokenizer,你需要在 Elasticsearch 的索引设置中指定它。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PUT /my_index
{
"settings": {
"analysis": {
"tokenizer": {
"my_custom_tokenizer": {
"type": "standard"
}
},
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "my_custom_tokenizer"
}
}
}
}
}

在上面的例子中,我定义了一个名为 my_custom_tokenizer 的 Tokenizer,并将其应用到一个自定义分析器 my_custom_analyzer 中。

扩展知识

1)内置 Tokenizer 类型

  • standard: 是默认的分词器,按词语切分,并进行基本的规范化处理。
  • whitespace: 基于空白字符进行分词,即空格、制表符等。
  • keyword: 把整个输入作为单一的词元,不进行切分。
  • letter: 按字母切分,其他字符,例如数字、标点符号会被作为分隔符。
  • lowercase: 与 keyword 类似,但会将结果转换成小写。
  • uax_url_email: 针对 URL 和电子邮件的分词器。

2)自定义 Tokenizer
除了内置的 Tokenizer 之外,你还可以通过插件机制来实现自定义的分词器,这在需要特定语言处理或特殊文本场景(如代码、医学文献)时非常有用。

3)分词与分析器的关系
Tokenizer 是分析器(analyzer)的一部分。在定义分析器时,你还可以指定过滤器(filters)来进一步定制文本的分析流程。比如,指定停止词过滤、同义词过滤。

4)调试与测试分词效果
使用 Elasticsearch 提供的 _analyze API 你可以测试某个分析器在特定文本上的分词效果。例如:

1
2
3
4
5
GET /my_index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "Hello, this is an example."
}

通过这个 API,你可以检查分词器和分析器的输出,确保它们符合预期。

5)应用场景
Tokenizer 通常在全文搜索、自然语言处理、数据挖掘等场景下被广泛应用。合理选择和配置分词器,可以显著提升搜索结果的精确度和用户体验。

Comments
On this page
什么是 Elasticsearch 的 Tokenizer?如何使用它?