1. 课程导论:领域建模与搜索索引的关系、课程目标与适用人群、整体知识图谱预览
1.1 为什么搜索索引需要领域建模?
传统搜索引擎索引设计往往从“倒排列表”和“词频统计”出发,将文档视为扁平的关键词集合。这种设计在面对复杂业务实体(如电商商品、医疗病历、金融合同)时,暴露出三个核心缺陷:
- 语义丢失:无法区分“苹果”是水果还是品牌,无法表达“订单”与“用户”之间的归属关系。
- 检索噪声:扁平索引返回大量无关结果,用户需要手动过滤。
- 扩展困难:新增实体属性或关系时,需要重建整个索引结构。
领域建模(Domain Modeling)通过识别业务中的实体(Entity)、值对象(Value Object)、聚合(Aggregate)和关系(Relationship),为索引设计提供了“语义骨架”。将领域模型映射到搜索索引,本质上是把业务知识编码进索引结构,使搜索引擎能够理解“用户搜索‘北京发货的华为手机’时,实际是在查询‘发货地址包含北京’且‘品牌为华为’的商品实体”。
核心观点: 搜索索引不应只是关键词的容器,而应是领域模型的投影。索引结构 = 实体结构 + 关系结构 + 搜索策略。
1.2 课程目标与适用人群
| 维度 | 详细说明 |
|---|---|
| 课程总目标 | 掌握从领域模型推导搜索索引结构的方法论,能够独立设计支持复杂实体关系、高性能、易扩展的搜索索引方案。 |
| 能力层级 | 从“会配置搜索引擎”提升到“会设计索引架构”,理解索引背后的领域语义。 |
| 适用人群 1 | 后端/搜索开发工程师:需要设计或优化搜索索引,解决检索准确率和性能问题。 |
| 适用人群 2 | 领域建模/架构师:希望将领域驱动设计(DDD)成果落地到搜索基础设施。 |
| 适用人群 3 | 产品/数据工程师:需要理解搜索索引的能力边界,与开发团队高效协作。 |
1.3 整体知识图谱预览
本课程按“建模 → 映射 → 优化 → 实战”四阶段组织,共 30 章。下图展示了核心知识模块及其依赖关系:
1.4 课程核心概念对比
在进入具体章节前,先明确三个贯穿课程的关键概念差异:
| 概念 | 领域建模视角 | 搜索索引视角 | 课程关注点 |
|---|---|---|---|
| 实体 | 有唯一标识、有生命周期 | 索引中的主文档(_id) | 如何将实体属性映射为可搜索字段 |
| 值对象 | 无标识、描述性、不可变 | 嵌套对象或扁平字段 | 何时嵌套、何时扁平化 |
| 聚合 | 一组实体和值对象的边界 | 文档嵌套结构或父子关系 | 聚合边界如何决定索引分片策略 |
学习建议: 如果你对领域驱动设计(DDD)不熟悉,建议先阅读第 2-5 章;如果你已有 DDD 基础,可以直接从第 6 章“索引映射模式”开始。每章末尾的“动手练习”环节强烈建议完成,以巩固建模到索引的映射能力。
1.5 课程输出物预览
完成本课程后,你将能够产出以下关键交付物:
- 领域模型图:包含实体、值对象、聚合及关系的 UML 类图或 C4 模型。
- 索引映射模板:基于领域模型生成的 JSON 或 YAML 索引映射文件。
- 查询策略文档:针对不同实体关系的查询语句、评分脚本和聚合分析方案。
- 性能测试报告:包含索引吞吐量、查询延迟、分片均衡性的基准数据。
- 索引演进方案:支持业务模型变更的索引版本管理与迁移计划。