当前位置: 首页 > article >正文

Elasticsearch 分词器

一、分词器的作用

分词器(Analyzer)是Elasticsearch中用于文本分析与处理的组件。它的主要作用是将用户输入的一段文本,按照一定逻辑分析成多个词语。这个过程也叫做文本分析或文本切分。

二、分词器的构成

分词器由三部分组成:字符过滤器(Character Filters)、分词器(Tokenizer)和标记过滤器(Token Filters)。

  1. 字符过滤器:接收原字符流,通过添加、删除或者替换操作改变原字符流。例如,去除文本中的HTML标签,或者将罗马数字转换成阿拉伯数字等。
  2. 分词器:将文本切分为单个或多个分词。它是文本分析的核心部分,负责将文本拆分成词语。
  3. 标记过滤器:对分词后的结果进行过滤和处理。例如,将所有英文单词小写化,或者删除英文中的停用词等。

三、分词器的使用

在Elasticsearch中,分词器可以在创建索引和搜索时使用。

  1. 创建索引时:当索引文档字符类型为text时,在建立索引时将会对该字段进行分词。此时,可以按照以下顺序确定使用哪个分词器:
    • 先判断字段是否有设置分词器,如果有,则使用字段属性上的分词器设置。
    • 如果设置了analysis.analyzer.default,则使用该设置的分词器。
    • 如果上面两个都未设置,则使用默认的standard分词器。
  2. 搜索时:当对一个text类型的字段进行全文检索时,会对用户输入的文本进行分词。此时,可以通过以下参数依次检查搜索时使用的分词器:
    • 搜索时指定analyzer参数。
    • 创建mapping时指定字段的search_analyzer属性。
    • 创建索引时指定setting的analysis.analyzer.default_search。
    • 如果上面几种都未设置,则使用默认的standard分词器。

四、内置分词器与自定义分词器

Elasticsearch提供了多种内置分词器,如标准分词器(Standard Analyzer)、语言分词器(如中文分词器)等。这些分词器可以根据不同的需求进行选择和配置。

同时,Elasticsearch也支持自定义分词器。用户可以根据自己的需求编写分词器,实现自定义的拆分规则和词语处理逻辑。自定义分词器需要编写自己的分词器和字符过滤器,并在Elasticsearch中注册分词器。

1、内置分词器

  1. 标准分词器(Standard Analyzer)
    • Elasticsearch的默认分词器。
    • 根据空格和标点符号将文本拆分为词项,并进行小写转换和标点符号过滤。
    • 适用于大多数情况,但对中文文本的支持不够理想。
  2. 简单分词器(Simple Analyzer)
    • 通过非字母字符来分割文本。
    • 将单词转换为小写形式,并去除数字类型的字符。
    • 适用于简单的文本处理需求,不适用于需要处理复杂文本的场景。
  3. 空白分词器(Whitespace Analyzer)
    • 仅通过空格来分割文本,不进行其他处理。
    • 适用于需要保留原始文本的场景。
  4. 关键字分词器(Keyword Analyzer)
    • 不对文本进行拆分,将整个文本作为一个词项。
    • 通常用于不需要进行分词的字段,如关键字字段或精确匹配字段。
  5. 模式分词器(Pattern Analyzer)
    • 允许用户自定义拆分模式,通过正则表达式来定义Token的拆分规则。
    • 适用于需要灵活控制文本拆分的场景。
  6. 停止词分词器(Stop Analyzer)
    • 与简单分词器类似,但增加了对删除停止词的支持。
    • 默认使用英语停止词列表,如“the”、“a”、“an”等。
  7. 语言分词器
    • Elasticsearch还提供了多种针对特定语言的分词器,如英语、中文、法语等。
    • 这些分词器会根据特定的语言规则和特征进行分词处理,以提供更准确的分词效果。

2、第三方分词器

  1. IK分词器
    • 一个开源的、基于Java语言开发的中文分词工具包。
    • 提供了两种分词算法:ik_smart(最少切分)和ik_max_word(最细粒度划分)。
    • 支持词库扩展和自定义词典,适用于对中文文本的更精确分词和分析需求。
  2. Smart Chinese Analyzer(smartcn)
    • Elasticsearch内置的中文分词器。
    • 使用机器学习算法进行分词,适用于简体中文和繁体中文。
    • 易于使用,无需额外配置,具有较高的分词准确性和召回率。
  3. 拼音分词器
    • 可以将中文分成对应的全拼、全拼首字母等。
    • 在搜索框中输入拼音时,可以出现对应的目标结果。

3、自定义分词器

用户还可以根据自己的需求编写自定义分词器,实现自定义的拆分规则和词语处理逻辑。自定义分词器需要编写自己的分词器和字符过滤器,并在Elasticsearch中注册分词器。

五、分词器的安装与配置

在Elasticsearch中,分词器通常是以插件的形式进行安装的。用户可以从相应分词插件的官网或git上下载插件包,然后将其上传到Elasticsearch集群所在的节点,并使用命令进行安装。安装完成后,还需要重启Elasticsearch服务以使分词插件生效。

在配置分词器时,用户可以在创建索引时指定分词器的相关设置,包括字符过滤器、分词器和标记过滤器等。

六、分词示例

以IK分词器为例,IK分词器是Elasticsearch的一个中文分词插件,它提供了多种分词模式供用户选择。以下是一个使用IK分词器的示例:

GET _analyze/?pretty
{
  "analyzer": "ik_smart",
  "text": "庆祝祖国六十岁生日快乐"
}

返回结果中,分词器将传入的text文本分割为了若干个词汇短语,如“庆祝”、“祖国”、“六十岁”等。


http://www.kler.cn/a/406503.html

相关文章:

  • Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析
  • 《Python基础》之pip换国内镜像源
  • django从入门到精通(六)——auth认证及自定义用户
  • 【11.22更新】Win11 24H2正式版:26100.2454镜像一键获取!
  • Bug:引入Feign后触发了2次、4次ContextRefreshedEvent
  • 如何判断注入点传参类型--理论
  • “人工智能+高职”:VR虚拟仿真实训室的发展前景
  • 安装多个nodejs版本(nvm)
  • 2024年11月最新版Adobe PhotoShop(26.0)中文版下载
  • 高性能网络SIG月度动态: 推进SMC支持基于eBPF透明替换和内存水位限制等多项功能支持
  • 在线pdf转word免费工具
  • AI科技赋能,探索人力资源管理软件的高效应用
  • C++11异步操作——std::future
  • 即时通讯app入侵了 怎么办?
  • 浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
  • IAR与鸿轩科技共同推进汽车未来
  • 实验07---7-03 n个数存入数组,输出下标奇数的元素
  • 代理IP:苹果Siri与ChatGPT Plus融合的关键助力
  • Android上运行Opencv(TODO)
  • 机器学习周志华学习笔记-第3章<线性模型>
  • 【阅读记录-章节3】Build a Large Language Model (From Scratch)
  • 掌上单片机实验室 – RT-Thread + ROS2 初探(25)
  • 【FTHR-G0001开发板测评】简介、程序测试
  • 不用 SQL 的数据仓库
  • leetcode-11-盛最多水的容器
  • 使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>