查看更多当前 - 案例分析 - Web应用设计
简单
案例题
2024年11月第4题
#了解即可
#超纲

阅读以下关于数据库缓存架构的叙述,在答题纸上回答问题1-3。
【说明】
某电商企业计划开发一款商品推荐系统,并接入微信小程序,以提升用户购物体验,增加商品销量。该企业组建了项目团队,团队成员包括项目经理、架构师、开发工程师、测试工程师等。在技术选型方面,架构师经过调研和评估,选择了 Elasticsearch 作为搜索引擎,利用其强大的分词功能和分布式架构,实现对海量商品数据的高效存储和检索。

分值(6分

Elasticsearch中内置了很多分词器,请用150字说明Simple, Whitespace, Keyword 分词引擎的特点差异。

参考答案
  • Simple 分词器:按非字母字符拆分文本,转为小写,适合英文文本,不保留标点和数字。
  • Whitespace 分词器:仅按空格分词,不做大小写转换或符号过滤,保留原始形式,适用于格式固定的内容。
  • Keyword 分词器:不分词,整体作为一个词项,常用于精确匹配场景,如ID、标签等。
凯恩解析

分词一个非常关键的基础问题,指的是将一段连续的文本拆分成一个个有意义的“词”或“词项(token)”的过程。
例如:

原始文本:我爱北京天安门  
分词结果:["我", "爱", "北京", "天安门"]

ES构建索引时拆分文本,也就是将字段值分解为多个词项(tokens),建立倒排索引。如果你查询 "北京",就能直接命中文档中相应的词项,而不是全表检索,效率差、效果差。

假如你不知道什么是分词,实际上根据字面意思Whitespace和Keyword 分词的含义也很好猜出来,拿个 4 分没有问题。其他常见的分词方法如下所示,作为补充拓展。

  1. Standard 分词器

    • 原理:默认分词器,基于 Unicode 文本分割算法,自动识别单词边界并将字母转为小写。
    • 示例"Hello, world!"["hello", "world"]
    • 适用场景:通用英文文本搜索。
  2. Simple 分词器

    • 原理:按非字母字符切分文本,结果转为小写;不识别数字或标点。
    • 示例"Hello, world!"["hello", "world"]
    • 适用场景:英文文本中快速获取单词,处理简单清洗任务。
  3. Whitespace 分词器

    • 原理:仅按空格切分文本,保留大小写和标点,不做任何预处理。
    • 示例"Hello WORLD"["Hello", "WORLD"]
    • 适用场景:日志、代码等格式固定文本的处理。
  4. Keyword 分词器

    • 原理:整体保留原始文本为一个词项,不进行分词处理。
    • 示例"Hello World"["Hello World"]
    • 适用场景:ID、标签、URL 等需精确匹配的字段。
  5. NGram 分词器

    • 原理:将文本按 n 个字符滑动分割,适用于模糊匹配。
    • 示例"apple",n=2 → ["ap", "pp", "pl", "le"]
    • 适用场景:搜索建议、拼写纠错、中文子串匹配。
  6. CJK 分词器

    • 原理:面向中日韩语言的正向最大匹配算法。
    • 示例"我爱北京天安门"["我", "爱", "北京", "天安门"]
    • 适用场景:中日韩文本搜索。
  7. Stop 分词器

    • 原理:在分词时过滤停用词(如 "is"、"the" 等),保留有价值词项。
    • 示例"The cat is cute"["cat", "cute"]
    • 适用场景:英文搜索优化,减少干扰项。
  8. Pattern 分词器

    • 原理:基于正则表达式自定义分割规则。
    • 示例:文本 "a;b|c",分隔符正则为 ;|\|["a", "b", "c"]
    • 适用场景:结构化日志、特殊格式字符串。
  9. uax_url_email 分词器

    • 原理:扩展分词器,能识别和保留 URL、邮箱等结构化实体。
    • 示例"test@example.com"["test@example.com"]
    • 适用场景:网页索引、邮箱字段搜索。
联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有