Bootstrap

Elasticsearch 6.8 分析器

在 Elasticsearch 中,分析器(Analyzer)是文本分析过程中的一个关键组件,它负责将原始文本转换为一组词汇单元(tokens)。

分析器由三个主要部分组成:分词器(Tokenizer)、过滤器(Token Filters)、和字符过滤器(Character Filters)。这些组件共同作用,以确保文本数据被正确索引和搜索。

组成部分

1、字符过滤器(Character Filters)

在分词之前对文本进行预处理。

可以用于去除或替换特定字符或字符序列。

示例:HTML Strip Filter,用于去除 HTML 标签。

2、分词器(Tokenizer)

将文本分割成基本的词汇单元。

决定了词汇单元的边界。

示例:Standard Tokenizer、Whitespace Tokenizer。

3、过滤器(Token Filters)

在分词之后对词汇单元进行进一步处理。

用于转换、删除或修改词汇单元。

示例:Lowercase Filter、Stop Filter、Synonym Filter。

常见分析器类型

1、Standard Analyzer

默认分析器,使用 Standard Tokenizer 和一组默认的过滤器(如小写过滤器)。

适用于大多数语言的通用文本处理。

2、Simple Analyzer

使用 Lowercase Tokenizer,将文本分割为小写的单词。

适用于简单的文本处理需求。

3、Whitespace Analyzer

仅使用 Whitespace Tokenizer,通过空格分割词汇单元。

不进行任何字符转换。

4、Stop Analyzer

类似于 Simple Analyzer,但会去除常见的停用词。

5、Keyword Analyzer

将整个输入作为单个词汇单元返回。

适用于精确匹配的场景。

6、Custom Analyzer

用户可以根据需要自定义分析器,组合不同的字符过滤器、分词器和词汇过滤器。

自定义分析器示例

以下是如何创建一个自定义分析器的示例,该分析器使用 Whitespace Tokenizer,并将所有词汇单元转换为小写,同时去除停用词:

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "stop"
          ]
        }
      }
    }
  }
}

使用分析器进行文本分析

创建索引并定义分析器后,可以使用 _analyze API 来查看分析器的效果:

POST /my_index/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text": "The quick brown fox jumps over the lazy dog"
}

输出

{
  "tokens": [
    {"token": "quick", "start_offset": 4, "end_offset": 9, "type": "word", "position": 1},
    {"token": "brown", "start_offset": 10, "end_offset": 15, "type": "word", "position": 2},
    {"token": "fox", "start_offset": 16, "end_offset": 19, "type": "word", "position": 3},
    {"token": "jumps", "start_offset": 20, "end_offset": 25, "type": "word", "position": 4},
    {"token": "lazy", "start_offset": 35, "end_offset": 39, "type": "word", "position": 7},
    {"token": "dog", "start_offset": 40, "end_offset": 43, "type": "word", "position": 8}
  ]
}

通过选择和配置合适的分析器,你可以优化文本数据的索引和搜索性能,以满足特定应用需求。分析器的灵活性允许你处理各种语言和文本格式,确保搜索结果的准确性和相关性。

;