ES的预置分词器

Elasticsearch(简称 ES)提供了多种预置的分词器(Analyzer),用于对文本进行分词处理。分词器通常由字符过滤器(Character Filters)、分词器(Tokenizer)和词元过滤器(Token Filters)组成。以下是一些常用的预置分词器及其示例:


1. Standard Analyzer(标准分词器)

  • 默认分词器,适用于大多数语言。

  • 处理步骤:

    1. 使用标准分词器(Standard Tokenizer)按空格和标点符号分词。
    2. 应用小写过滤器(Lowercase Token Filter)将词元转换为小写。
  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "standard",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["the", "2", "quick", "brown", "foxes", "jumped", "over", "the", "lazy", "dog's", "bone"]

2. Simple Analyzer(简单分词器)

  • 按非字母字符(如数字、标点符号)分词,并将词元转换为小写。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "simple",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["the", "quick", "brown", "foxes", "jumped", "over", "the", "lazy", "dog", "s", "bone"]

3. Whitespace Analyzer(空格分词器)

  • 仅按空格分词,不转换大小写,不处理标点符号。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "whitespace",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["The", "2", "QUICK", "Brown-Foxes", "jumped", "over", "the", "lazy", "dog's", "bone."]

4. Keyword Analyzer(关键词分词器)

  • 将整个文本作为一个单独的词元,不做任何分词处理。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "keyword",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."]

5. Stop Analyzer(停用词分词器)

  • 类似于简单分词器,但会过滤掉常见的停用词(如 "the", "and", "a" 等)。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "stop",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["quick", "brown", "foxes", "jumped", "over", "lazy", "dog", "s", "bone"]

6. Pattern Analyzer(正则分词器)

  • 使用正则表达式定义分词规则。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "pattern",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    默认按非字母字符分词,并转换为小写:

    json 复制代码
    ["the", "2", "quick", "brown", "foxes", "jumped", "over", "the", "lazy", "dog", "s", "bone"]

7. Language Analyzer(语言分词器)

  • 针对特定语言优化,支持多种语言(如英语、中文、法语等)。

  • 示例(英语)

    json 复制代码
    POST _analyze
    {
      "analyzer": "english",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["2", "quick", "brown", "fox", "jump", "over", "lazi", "dog", "bone"]

8. ICU Analyzer(国际化分词器)

  • 基于 ICU(International Components for Unicode)库,支持多语言分词。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "icu_analyzer",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["the", "2", "quick", "brown", "foxes", "jumped", "over", "the", "lazy", "dog's", "bone"]

9. Fingerprint Analyzer(指纹分词器)

  • 对文本进行分词、去重、排序,并生成唯一的"指纹"。

  • 示例

    json 复制代码
    POST _analyze
    {
      "analyzer": "fingerprint",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    输出

    json 复制代码
    ["2", "bone", "brown", "dog", "foxes", "jumped", "lazy", "over", "quick", "the"]

总结

Elasticsearch 的预置分词器适用于不同的场景,开发者可以根据需求选择合适的分析器,或者自定义分词器以满足特定需求。

相关推荐
ctrl_v助手4 小时前
VisionPro (R) QuickBuild相机的连接
服务器·笔记·数码相机·c#
biter down4 小时前
2:Ubuntu 22.04 LTS 的完整下载教程
linux·运维·ubuntu
零陵上将军_xdr4 小时前
为什么DCL单例要加volatile?——CPU乱序执行与内存屏障
java·linux
杨云龙UP4 小时前
Oracle/ODA RAC /u01 空间告警处理指南:grid 用户监听日志清理_2026-06-15
linux·数据库·oracle·oracle linux·oda·监听日志·在线清理
Elastic 中国社区官方博客4 小时前
Elasticsearch:使用向量搜索构建现代应用的最佳实践
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
by————组态4 小时前
Ricon组态技术架构 - 企业级Web组态解决方案
运维·服务器·前端·物联网·架构·组态·组态软件
赋缘汇(fableshare)-黄从庆5 小时前
Ubuntu重启后进入initramfs导致无法开机
linux·运维·ubuntu
CHINA红旗下5 小时前
固定虚拟机的IP地址
运维·服务器·网络
DO_Community5 小时前
百亿参数开源模型托管成本账:从按 Token 计费到单卡 GPU 服务器怎么选?
运维·服务器·开源·llm·agent
1024+5 小时前
在 ‌Ubuntu 24.04‌ 上安装 ‌Python 3.8‌
linux·python·ubuntu