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,并将所有词汇单元转换为小写,同时去除停用词:

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

使用分析器进行文本分析

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

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

输出

json 复制代码
{
  "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}
  ]
}

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

相关推荐
Elastic 中国社区官方博客3 小时前
使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变
大数据·人工智能·elasticsearch·microsoft·搜索引擎·ai·azure
Karoku0669 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
上优11 小时前
uniapp 选择 省市区 省市 以及 回显
大数据·elasticsearch·uni-app
jwolf213 小时前
Elasticsearch向量搜索:从语义搜索到图搜图只有一步之遥
elasticsearch·搜索引擎·ai
你可以叫我仔哥呀14 小时前
ElasticSearch学习笔记三:基础操作(一)
笔记·学习·elasticsearch
hummhumm15 小时前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
java1234_小锋18 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客18 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
我的运维人生18 小时前
Elasticsearch实战应用:构建高效搜索与分析平台
大数据·elasticsearch·jenkins·运维开发·技术共享
Mephisto.java1 天前
【大数据学习 | Spark】Spark的改变分区的算子
大数据·elasticsearch·oracle·spark·kafka·memcache