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

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 中级
🙉八股文专题:剑指大厂,手撕 Java 八股文

在这里插入图片描述

文章目录

      • 1. 什么是 Standard 分词器?
      • 2. 什么是 Simple 分词器?
      • 3. 什么是 WhiteSpace 分词器?
      • 4. 什么是 Keyword 分词器?

1. 什么是 Standard 分词器?

Standard 分词器(Standard Tokenizer)是 Elasticsearch 和 Lucene 中最常用的分词器之一。它主要用于处理自然语言文本,能够识别单词、数字、电子邮件地址、URL 等,并将它们分割成单独的词元(tokens)。Standard 分词器遵循 Unicode 文本分段算法(Unicode Text Segmentation Algorithm),能够处理多种语言的文本。

特点:

  • 识别单词:能够识别常见的单词边界。
  • 处理标点符号:会忽略大多数标点符号,但保留电子邮件地址和 URL。
  • 处理数字:能够识别并保留数字。
  • 处理特殊字符:能够处理一些特殊字符,如连字符和撇号。

示例:

POST _analyze
{"analyzer": "standard","text": "Elasticsearch is a powerful search engine. Visit https://www.elastic.co for more information."
}

输出

{"tokens": [{ "token": "elasticsearch", "start_offset": 0, "end_offset": 11, "type": "<ALPHANUM>", "position": 0 },{ "token": "is", "start_offset": 12, "end_offset": 14, "type": "<ALPHANUM>", "position": 1 },{ "token": "a", "start_offset": 15, "end_offset": 16, "type": "<ALPHANUM>", "position": 2 },{ "token": "powerful", "start_offset": 17, "end_offset": 25, "type": "<ALPHANUM>", "position": 3 },{ "token": "search", "start_offset": 26, "end_offset": 32, "type": "<ALPHANUM>", "position": 4 },{ "token": "engine", "start_offset": 33, "end_offset": 39, "type": "<ALPHANUM>", "position": 5 },{ "token": "visit", "start_offset": 41, "end_offset": 46, "type": "<ALPHANUM>", "position": 6 },{ "token": "https", "start_offset": 47, "end_offset": 52, "type": "<ALPHANUM>", "position": 7 },{ "token": "www.elastic.co", "start_offset": 53, "end_offset": 68, "type": "<ALPHANUM>", "position": 8 },{ "token": "for", "start_offset": 70, "end_offset": 73, "type": "<ALPHANUM>", "position": 9 },{ "token": "more", "start_offset": 74, "end_offset": 78, "type": "<ALPHANUM>", "position": 10 },{ "token": "information", "start_offset": 79, "end_offset": 90, "type": "<ALPHANUM>", "position": 11 }]
}

2. 什么是 Simple 分词器?

Simple 分词器(Simple Tokenizer)是一个简单的分词器,它将文本按非字母字符(如空格、标点符号等)分割成词元。它只保留字母字符,并将所有字母转换为小写。

特点:

  • 简单分割:只按非字母字符分割。
  • 小写转换:将所有字母转换为小写。
  • 不处理数字:数字被视为非字母字符,会被分割掉。

示例:

POST _analyze
{"tokenizer": "simple_pattern","text": "Elasticsearch is a powerful search engine. Visit www.elastic.co for more information."
}

输出

{"tokens": [{ "token": "elasticsearch", "start_offset": 0, "end_offset": 11, "type": "word", "position": 0 },{ "token": "is", "start_offset": 12, "end_offset": 14, "type": "word", "position": 1 },{ "token": "a", "start_offset": 15, "end_offset": 16, "type": "word", "position": 2 },{ "token": "powerful", "start_offset": 17, "end_offset": 25, "type": "word", "position": 3 },{ "token": "search", "start_offset": 26, "end_offset": 32, "type": "word", "position": 4 },{ "token": "engine", "start_offset": 33, "end_offset": 39, "type": "word", "position": 5 },{ "token": "visit", "start_offset": 41, "end_offset": 46, "type": "word", "position": 6 },{ "token": "wwwelasticco", "start_offset": 50, "end_offset": 62, "type": "word", "position": 7 },{ "token": "for", "start_offset": 64, "end_offset": 67, "type": "word", "position": 8 },{ "token": "more", "start_offset": 68, "end_offset": 72, "type": "word", "position": 9 },{ "token": "information", "start_offset": 73, "end_offset": 84, "type": "word", "position": 10 }]
}

3. 什么是 WhiteSpace 分词器?

WhiteSpace 分词器(Whitespace Tokenizer)是最简单的分词器之一,它仅按空格分割文本,不处理其他标点符号或特殊字符。

特点:

  • 按空格分割:只按空格分割文本。
  • 保留所有字符:不忽略任何字符,包括标点符号和数字。

示例:

POST _analyze
{"tokenizer": "whitespace","text": "Elasticsearch is a powerful search engine. Visit www.elastic.co for more information."
}

输出

{"tokens": [{ "token": "Elasticsearch", "start_offset": 0, "end_offset": 11, "type": "word", "position": 0 },{ "token": "is", "start_offset": 12, "end_offset": 14, "type": "word", "position": 1 },{ "token": "a", "start_offset": 15, "end_offset": 16, "type": "word", "position": 2 },{ "token": "powerful", "start_offset": 17, "end_offset": 25, "type": "word", "position": 3 },{ "token": "search", "start_offset": 26, "end_offset": 32, "type": "word", "position": 4 },{ "token": "engine.", "start_offset": 33, "end_offset": 40, "type": "word", "position": 5 },{ "token": "Visit", "start_offset": 41, "end_offset": 46, "type": "word", "position": 6 },{ "token": "www.elastic.co", "start_offset": 47, "end_offset": 62, "type": "word", "position": 7 },{ "token": "for", "start_offset": 63, "end_offset": 66, "type": "word", "position": 8 },{ "token": "more", "start_offset": 67, "end_offset": 71, "type": "word", "position": 9 },{ "token": "information.", "start_offset": 72, "end_offset": 85, "type": "word", "position": 10 }]
}

4. 什么是 Keyword 分词器?

Keyword 分词器(Keyword Tokenizer)是一个不分词的分词器,它将整个输入文本作为一个单一的词元处理。这意味着输入文本不会被分割成多个词元。

特点:

  • 不分词:将整个输入文本作为一个词元处理。
  • 保留原样:不进行任何转换或修改。

示例:

POST _analyze
{"tokenizer": "keyword","text": "Elasticsearch is a powerful search engine. Visit www.elastic.co for more information."
}

输出

{"tokens": [{ "token": "Elasticsearch is a powerful search engine. Visit www.elastic.co for more information.", "start_offset": 0, "end_offset": 85, "type": "word", "position": 0 }]
}
  • Standard 分词器:适用于自然语言文本,能够识别单词、数字、电子邮件地址和 URL。
  • Simple 分词器:简单地按非字母字符分割文本,并将所有字母转换为小写。
  • WhiteSpace 分词器:仅按空格分割文本,保留所有字符。
  • Keyword 分词器:将整个输入文本作为一个单一的词元处理,不分词。

这些分词器各有特点,适用于不同的场景。选择合适的分词器可以提高搜索和索引的效率和准确性。

精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶

在这里插入图片描述

http://www.lryc.cn/news/483847.html

相关文章:

  • Elman 神经网络 MATLAB 函数详解
  • vue el-date-picker 日期选择器禁用失效问题
  • 搭建Python2和Python3虚拟环境
  • 【HarmonyOS NEXT】一次开发多端部署(以轮播图、Tab栏、列表为例,配合栅格布局与媒体查询,进行 UI 的一多开发)
  • ubontu--cuDNN安装
  • 高项 - 项目范围管理
  • 如何获取PostgreSQL慢查询?从小白到高手的实战指南
  • golang分布式缓存项目 Day4 一致性哈希
  • ARM 汇编指令
  • 打造个性化体验:在Axure中创建你的专属组件库
  • 如何用WordPress和Shopify提升SEO表现?
  • 不泄密的安全远程控制软件需要哪些技术
  • rust高级特征
  • STM32F407简单驱动步进电机(标准库)
  • 使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本
  • LeetCode131. 分割回文串(2024冬季每日一题 4)
  • 万字长文解读深度学习——训练(DeepSpeed、Accelerate)、优化(蒸馏、剪枝、量化)、部署细节
  • STM32—独立看门狗(IWDG)和窗口看门狗(WWDG)
  • ks8 本地化部署 F5-TTS
  • Web组态大屏可视化编辑器
  • 【comfyui教程】让模特换衣服,comfyui一键搞定!
  • 数据湖与数据仓库的区别
  • golang分布式缓存项目 Day6 防止缓存击穿
  • Redis高可用-主从复制
  • Angular框架:构建现代Web应用的全面指南
  • Golang | Leetcode Golang题解之第563题二叉树的坡度
  • gdb编译教程(支持linux下X86和ARM架构)
  • Android 开发指南:初学者入门
  • 镭速大文件传输软件向金融银行的文档管理提供高效的解决方案
  • D64【python 接口自动化学习】- python基础之数据库