扫一扫二维码
进群一起备考
查看更多当前 - 案例分析 - Web应用设计
简单
案例题
2024年11月第4题
简单
案例题
2024年11月第4题
#了解即可
#超纲
阅读以下关于数据库缓存架构的叙述,在答题纸上回答问题1-3。
【说明】
某电商企业计划开发一款商品推荐系统,并接入微信小程序,以提升用户购物体验,增加商品销量。该企业组建了项目团队,团队成员包括项目经理、架构师、开发工程师、测试工程师等。在技术选型方面,架构师经过调研和评估,选择了 Elasticsearch 作为搜索引擎,利用其强大的分词功能和分布式架构,实现对海量商品数据的高效存储和检索。
分值(6分)
Elasticsearch中内置了很多分词器,请用150字说明Simple, Whitespace, Keyword 分词引擎的特点差异。
参考答案
- Simple 分词器:按非字母字符拆分文本,转为小写,适合英文文本,不保留标点和数字。
- Whitespace 分词器:仅按空格分词,不做大小写转换或符号过滤,保留原始形式,适用于格式固定的内容。
- Keyword 分词器:不分词,整体作为一个词项,常用于精确匹配场景,如ID、标签等。
凯恩解析
分词一个非常关键的基础问题,指的是将一段连续的文本拆分成一个个有意义的“词”或“词项(token)”的过程。
例如:
原始文本:我爱北京天安门
分词结果:["我", "爱", "北京", "天安门"]
ES构建索引时拆分文本,也就是将字段值分解为多个词项(tokens),建立倒排索引。如果你查询 "北京",就能直接命中文档中相应的词项,而不是全表检索,效率差、效果差。
假如你不知道什么是分词,实际上根据字面意思Whitespace和Keyword 分词的含义也很好猜出来,拿个 4 分没有问题。其他常见的分词方法如下所示,作为补充拓展。
-
Standard 分词器
- 原理:默认分词器,基于 Unicode 文本分割算法,自动识别单词边界并将字母转为小写。
- 示例:
"Hello, world!"→["hello", "world"] - 适用场景:通用英文文本搜索。
-
Simple 分词器
- 原理:按非字母字符切分文本,结果转为小写;不识别数字或标点。
- 示例:
"Hello, world!"→["hello", "world"] - 适用场景:英文文本中快速获取单词,处理简单清洗任务。
-
Whitespace 分词器
- 原理:仅按空格切分文本,保留大小写和标点,不做任何预处理。
- 示例:
"Hello WORLD"→["Hello", "WORLD"] - 适用场景:日志、代码等格式固定文本的处理。
-
Keyword 分词器
- 原理:整体保留原始文本为一个词项,不进行分词处理。
- 示例:
"Hello World"→["Hello World"] - 适用场景:ID、标签、URL 等需精确匹配的字段。
-
NGram 分词器
- 原理:将文本按 n 个字符滑动分割,适用于模糊匹配。
- 示例:
"apple",n=2 →["ap", "pp", "pl", "le"] - 适用场景:搜索建议、拼写纠错、中文子串匹配。
-
CJK 分词器
- 原理:面向中日韩语言的正向最大匹配算法。
- 示例:
"我爱北京天安门"→["我", "爱", "北京", "天安门"] - 适用场景:中日韩文本搜索。
-
Stop 分词器
- 原理:在分词时过滤停用词(如 "is"、"the" 等),保留有价值词项。
- 示例:
"The cat is cute"→["cat", "cute"] - 适用场景:英文搜索优化,减少干扰项。
-
Pattern 分词器
- 原理:基于正则表达式自定义分割规则。
- 示例:文本
"a;b|c",分隔符正则为;|\|→["a", "b", "c"] - 适用场景:结构化日志、特殊格式字符串。
-
uax_url_email 分词器
- 原理:扩展分词器,能识别和保留 URL、邮箱等结构化实体。
- 示例:
"test@example.com"→["test@example.com"] - 适用场景:网页索引、邮箱字段搜索。