1. 课程导论:领域建模与搜索索引的关系、课程目标与适用人群、整体知识图谱预览

1.1 为什么搜索索引需要领域建模?

传统搜索引擎索引设计往往从“倒排列表”和“词频统计”出发,将文档视为扁平的关键词集合。这种设计在面对复杂业务实体(如电商商品、医疗病历、金融合同)时,暴露出三个核心缺陷:

  • 语义丢失:无法区分“苹果”是水果还是品牌,无法表达“订单”与“用户”之间的归属关系。
  • 检索噪声:扁平索引返回大量无关结果,用户需要手动过滤。
  • 扩展困难:新增实体属性或关系时,需要重建整个索引结构。

领域建模(Domain Modeling)通过识别业务中的实体(Entity)、值对象(Value Object)、聚合(Aggregate)和关系(Relationship),为索引设计提供了“语义骨架”。将领域模型映射到搜索索引,本质上是把业务知识编码进索引结构,使搜索引擎能够理解“用户搜索‘北京发货的华为手机’时,实际是在查询‘发货地址包含北京’且‘品牌为华为’的商品实体”。

核心观点: 搜索索引不应只是关键词的容器,而应是领域模型的投影。索引结构 = 实体结构 + 关系结构 + 搜索策略。

1.2 课程目标与适用人群

维度 详细说明
课程总目标 掌握从领域模型推导搜索索引结构的方法论,能够独立设计支持复杂实体关系、高性能、易扩展的搜索索引方案。
能力层级 从“会配置搜索引擎”提升到“会设计索引架构”,理解索引背后的领域语义。
适用人群 1 后端/搜索开发工程师:需要设计或优化搜索索引,解决检索准确率和性能问题。
适用人群 2 领域建模/架构师:希望将领域驱动设计(DDD)成果落地到搜索基础设施。
适用人群 3 产品/数据工程师:需要理解搜索索引的能力边界,与开发团队高效协作。

1.3 整体知识图谱预览

本课程按“建模 → 映射 → 优化 → 实战”四阶段组织,共 30 章。下图展示了核心知识模块及其依赖关系:

课程知识图谱:领域建模驱动搜索索引 阶段一:领域建模基础 • 实体、值对象、聚合识别 • 限界上下文与上下文映射 • 关系类型:1:1 / 1:N / N:M • 领域事件与状态变迁 • 案例:电商订单领域模型 阶段二:索引映射与嵌套设计 • 文档嵌套 vs 关系索引 • 嵌套对象与 Nested 类型 • 父子关系与 Join 类型 • 反范式化与字段冗余策略 • 映射模板与动态映射 阶段三:搜索性能与精度优化 • 查询改写与评分调优 • 聚合分析与分面搜索 • 索引分片与路由策略 • 缓存与近实时搜索 • 性能基准测试方法 阶段四:实战案例与索引演进 • 电商搜索索引重构(商品/店铺/库存) • 医疗病历全文检索(患者/诊断/用药) • 索引版本管理与平滑迁移 课程设计原则 每个阶段都包含“理论 → 建模 → 索引映射 → 验证”闭环。 前三个阶段独立可学,第四阶段综合前三个阶段的知识。

1.4 课程核心概念对比

在进入具体章节前,先明确三个贯穿课程的关键概念差异:

概念 领域建模视角 搜索索引视角 课程关注点
实体 有唯一标识、有生命周期 索引中的主文档(_id) 如何将实体属性映射为可搜索字段
值对象 无标识、描述性、不可变 嵌套对象或扁平字段 何时嵌套、何时扁平化
聚合 一组实体和值对象的边界 文档嵌套结构或父子关系 聚合边界如何决定索引分片策略
学习建议: 如果你对领域驱动设计(DDD)不熟悉,建议先阅读第 2-5 章;如果你已有 DDD 基础,可以直接从第 6 章“索引映射模式”开始。每章末尾的“动手练习”环节强烈建议完成,以巩固建模到索引的映射能力。

1.5 课程输出物预览

完成本课程后,你将能够产出以下关键交付物:

  1. 领域模型图:包含实体、值对象、聚合及关系的 UML 类图或 C4 模型。
  2. 索引映射模板:基于领域模型生成的 JSON 或 YAML 索引映射文件。
  3. 查询策略文档:针对不同实体关系的查询语句、评分脚本和聚合分析方案。
  4. 性能测试报告:包含索引吞吐量、查询延迟、分片均衡性的基准数据。
  5. 索引演进方案:支持业务模型变更的索引版本管理与迁移计划。