☰分类导航

软件工程/索引构建
课程进度 35% · 第3/6章第3/6章 · 标签 1/8
— 1 —

先设计搜索文档

索引不是把整张数据库表原样复制。面向课程搜索,可以保留 lesson_id、title、body、category、published_at 和 visibility。以业务主键作为文档 ID,重复同步会替换同一记录。避免把密码、内部备注等无关字段送入搜索系统;展示需要的数据也应经过权限审查。

先列出用户实际需要的查询:搜标题、筛方向、按时间排序、点击回到原课程。每个字段说明业务来源和更新频率,尤其是权限与发布状态。这样可以避免写入大量无用字段,也能知道哪种业务变更必须触发同步。

— 2 —

字段类型决定行为

标题和正文通常作为 text 参与全文分析,课程分类和状态作为 keyword 精确筛选,发布时间用 date,阅读数用整数。某些标题同时需要全文检索和排序,可以增加 keyword 子字段。动态推断方便试验,但首条数据的偶然格式可能把后续字段类型带偏。

类型选择应从问题反推。分类需要精确等值,标题需要词项匹配,时间需要范围比较;如果把阅读数存成字符串,字典序就可能让一百排在二十前面。映射既是存储契约,也是查询语义的一部分。

  • text:检索分析后的词项。
  • keyword:按完整值筛选、聚合或排序。
  • date:执行时间范围查询与时间排序。
  • object 与 nested:有数组对象时先确认是否需要保持对象内部关联。