面试题答案
一键面试索引策略设计
- 全文搜索索引:
- 对于
title
和body
字段,使用全文搜索索引。以 MongoDB 为例,可通过以下方式创建全文索引:
db.news.createIndex({title: "text", body: "text"});
- 全文搜索索引能处理文本中的词干提取、停用词过滤等,在文本量较大时能极大提高检索效率。
- 对于
- 分类过滤索引:
- 针对
category
字段,创建单字段索引。在 MongoDB 中:
db.news.createIndex({category: 1});
- 单字段索引适用于基于该字段的过滤查询,能够快速定位到符合特定分类的文档。
- 针对
实现相关查询
- 全文搜索并分类过滤:
- 以 MongoDB 为例,假设要搜索标题或正文中包含“技术”且分类为“科技”的新闻:
db.news.find({ $text: {$search: "技术"}, category: "科技" });
- 这里
$text
操作符用于全文搜索,配合$search
指定搜索词。同时通过category
字段进行分类过滤。
- 仅分类过滤查询:
db.news.find({category: "体育"});
- 此查询仅基于
category
字段进行过滤,由于category
字段上有单字段索引,在大数据量下也能快速返回结果。
- 此查询仅基于
通过这样的索引策略和查询设计,可以在大数据量下保证新闻检索的性能。