关于 algolia-data-modeling
面向 Algolia 搜索实施的数据建模技能,帮助团队在编写入库代码前定义记录结构、索引契约和验证计划。重点是把业务与用户旅程要求转化为可维护的搜索记录,并明确变体、排名和更新责任。
主要功能
- 01制定索引契约与记录模型
- 02选择商品变体表示策略
- 03检查排名与促销数据缺口
- 04规划验证查询及重建索引
- 05保护公开响应中的内部字段
适用场景
- 01设计电商商品及变体索引
- 02迁移 objectID 或记录粒度
- 03为搜索筛选与排序准备字段
- 04明确数据更新和事件归属
MCP 相关
该技能可在使用 Algolia MCP 检查实时数据或索引后,帮助解释结果并制定索引契约与验证计划;实时操作由 Algolia MCP、CLI 或官方技能执行。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ algolia/ skills --skill algolia-data-modeling安装后在 Claude Code 中输入/algolia-data-modeling确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlevals/evals.jsonreferences/data-modeling-guide.mdexample-output.md详细介绍
Algolia 数据建模
使用此技能,在代码将记录写入 Algolia 前塑造数据。良好的相关性通常始于符合用户使用路径的记录,而不是照搬源数据库的架构。
面向客户的标准
- 在对记录结构作出判断前,先索取样例记录和边缘情况。
- 如果缺少源数据,请明确说明假设。
- 如需基于来源的信息,请使用公开的
academy.algolia.com对齐学习内容,并使用公开的algolia.com/doc获取当前实施指南。 - 如果有 Academy 元数据参考包,只能使用其中的
title、url、course、module、learning_objectives和updated_at字段来确定结构。如果元数据已过时或没有匹配项,请改为查询实时 Academy/docs。不要将缓存的元数据视为课程内容或实施依据。 - 不要要求访问自定义 Academy/docs;客户提供的来源只能作为可选背景信息。
- 如果需要实时 Algolia 数据、分析、索引检查、设置变更或账户操作,请使用 Algolia MCP、Algolia CLI 或官方 Algolia 技能执行实时操作,然后使用此技能解读结果并验证适合客户的实施路径。
- 提供索引契约、验证查询、负责人交接说明以及重新索引/更新路径。
- 对于电商目录,在讨论商品陈列或 UI 行为前,明确选择变体级、变体组级或商品级记录模型。
官方配套技能
- 如果需要检查实时样例记录、现有索引结构、对象数量、导入或导出,请使用官方的
algolia-mcp或algolia-cli。 - 在调用官方工具后使用此技能,将发现转化为面向客户的索引契约、变体策略和验证计划。
事实来源规则
- 不要仅根据数据库表推断最终记录模型。必须了解样例记录、UI 预期、事件需求和更新责任方。
- 未通过官方的
algolia-cli、algolia-mcp或当前文档确认实时操作前,不要指定确切的 Algolia 设置、API 命令或迁移步骤。 - 如果架构没有稳定 ID、变体归属、时间戳归属、库存策略和事件标识符,则应将其视为暂定方案。
- 在索引记录或开始 UI 实施前,尽可能创建或更新索引契约。如果用户需要快速原型,可先使用最简的暂定契约,并列出后续需要重新确认的假设。
- 不要用商品陈列规则来替代缺失的商品陈列数据。新品、促销状态、品牌归属、库存、畅销状态、利润率和人气必须是明确字段,或有文档说明的上游计算结果。
索引契约决策要点
在索引或开展 UI 工作前,尽可能创建 algolia/index-contract.md 或等效文档。如果在契约不完整的情况下继续,请指出哪些决策仍是暂定的:
- 索引名称。
- 记录模型:变体级、变体组级、商品级,或非电商场景下的等效模型。
- 记录粒度。
objectID策略。- 可搜索属性。
- 显示属性。
- 分面属性。
- 排名信号。
- 排名指标的粒度、顺序、方向、精度和分桶逻辑。
- 商品陈列字段。
- 库存字段。
- 事件归因字段。
- 更新责任方和频率。
- 验证查询。
对于演示和原型,请提供一段话的数据契约、三个验证查询,以及明确列出的暂缓处理的生产环境问题。
工作流
- 在确定数据形状前,先阅读
references/data-modeling-guide.md。 - 在编写面向客户的索引契约或展示优质输出示例时,先阅读
references/example-output.md。 - 如果记录粒度、业务目标或筛选要求未知,请询问相关背景信息。
- 先设计索引契约:索引名称、环境、
objectID策略、记录形状、可搜索属性、可分面属性、排序信号和更新责任归属。 - 编写代码前先选择变体策略:产品记录、变体记录、分组变体,或按语言区域、地区、租户、渠道、价格表或权限集拆分记录。
- 建立索引前,先检查商品运营数据缺口:模式是否清晰、时间戳/新近度、促销属性、库存分档、畅销分档、利润率/人气指标、指标精度以及上游责任归属。
- 优先使用反规范化、适合搜索的记录。避免强迫 UI 在查询时联接数据或推断关键排序/筛选字段。
- 将自定义排序输入设计为业务层面的平局判定因素,而不是原始数据库转储。确定哪些指标优先、数值越高还是越低越好,以及是否应对数值进行舍入或分档,以便后续排序属性仍能影响平局结果。
- 如果更改
objectID、记录粒度或影响相关性的设置,请制定迁移和重新建立索引的计划。 - 告知业务用户,许多商品运营问题首先是数据准备问题。如果索引记录中没有体现“新品”“促销”“自有品牌”“高库存”“高利润率”“高人气”或“畅销”等概念,规则和提升无法可靠地推广这些商品。
要询问的问题
只询问最少且有用的问题:
- 能否提供 5 条常规记录和 5 条边缘情况记录,包括变体、不可用商品、受限内容、地区差异或经常搜索效果不佳的记录?
- 搜索结果应代表什么实体:产品、变体、SKU、文章、地点、账户,还是其他单元?
- 变体应显示为独立命中项、每个产品一个命中项、每种共享属性(例如颜色)一个命中项、单个命中项内的分组选项,还是根据可用性、渠道、地区、账户或权限静默筛选?
- 用户必须能够搜索、筛选、排序、查看或用于排序的属性有哪些?
- 商品运营必须使用哪些属性来提升或降低产品排名:新品、评分、销量、人气、利润率、促销、自有品牌、高库存、畅销、季节性、营销活动,还是编辑优先级?
- 业务如何针对不同类别定义“新品”“高库存”和“畅销”?这些分档在建立索引前由哪里计算?
- 当文本相关性相同时,哪些自定义排序指标应依次生效:销量、利润率、评分、人气、新近度、库存,还是编辑优先级?
- 排序指标的精度是否过高,难以有效判定平局?是否应进行舍入或分档,例如
sales_30d_bucket、margin_band或freshness_bucket? - 哪些属性是稳定标识符,哪些是易变的显示或排序字段?
- 哪些记录应按用户/账户/地区/渠道隐藏、延迟显示或保护?
- 记录多久会更改一次?由哪个系统负责这些更改?
- 同一内容是否需要按语言区域、地区、租户、环境或用户群组建立单独的索引?
实施标准
- 将
objectID视为稳定契约。不要根据可变的展示字段推导它。 - 明确建模变体。如果用户期望每个产品只返回一个结果,就不要误将每个源数据行按 SKU 建立索引;如果颜色、尺码、库存情况、价格、地区或权限会实质性影响搜索行为,就不要合并变体。
- 有意识地控制记录大小:包含检索、排序、分面、展示、分析上下文和事件归因所需的字段。
- 将生产、预发布和开发索引分开。不要针对生产环境测试破坏性索引操作。
- 在适当情况下,使用副本支持其他排序方式,并使用虚拟副本进行相关排序。
- 构造 UI 响应时,确保事件所需的
queryID/objectID/位置保持兼容。 - 将公开响应允许列表纳入记录契约:内部排序依据(原始值或分桶后的人气度、销售速度、利润率)用于排序,而非对外提供——规划好
attributesToRetrieve(以及适当情况下的unretrievableAttributes),确保公开响应仅包含展示和事件归因字段,并使用公开搜索密钥通过实时查询进行验证。 - 选择一个有效价格属性,并在展示、排序、筛选、范围分面和副本设置中始终如一地使用。展示促销价,却按基础价格排序或筛选,是用户能察觉的缺陷(商品会出现顺序错误或不符合筛选条件),而非风格选择。
- 除非有明确的运营原因,否则不要要求 Algolia 使用精确库存数量进行商品运营。优先使用稳定的分桶值或布尔值,例如
in_stock、stock_bucket或high_inventory,避免每次销售都触发不必要的重新索引。 - 在索引前预先计算特定品类的新鲜度、高库存、促销、自有品牌和畅销标记。不要指望 Algolia 规则能从不完整记录中推断出缺失的业务定义。
- 说明连续值与分桶值的区别。精确的销量、利润率、库存或时间戳值可能有用,但分桶值通常更便于理解商品运营和自定义排序,也更不易受噪声影响。
- 将自定义排序视为文本相关性之后依次进行的平局判定。如果第一个排序指标过于精确,后续指标可能很少起作用;如果业务期望第二或第三个指标参与排序,就应降低精度或对数值进行分桶。
- 对于电商,保留产品身份、变体身份和 SKU 身份之间的区别。当 UI 必须将一个产品系列显示为一个结果,但事件或筛选仍需要变体级数据时,应使用父级 ID 和所选变体字段。
反模式
- 默认按每个 SKU 建立一行索引,但用户实际期望一个产品系列只显示一条结果。
- 当库存情况、价格、权限、颜色、尺码或事件归因必须因变体而异时,合并变体。
- 当分桶值就能以更少的更新满足业务需求时,仍使用精确库存数量作为商品运营输入。
- 在没有可靠时间戳或明确的新品属性时,推广“新品”。
- 在没有明确时间范围、品类范围和刷新负责人的情况下,推广“畅销品”。
- 在未确定业务排序顺序、方向、时间范围、品类范围和精度时,按原始销量、利润率、评分或人气度排序。
- 使用精度过高的首个自定义排序指标,导致后续业务指标无法判定平局。
- 因为源系统中使用方便,就将仅用于展示或内部使用的字段添加到可搜索文本中。
- 在记录契约确定之后才设计事件,导致后续出现
objectID、index、queryID或变体聚合问题。 - 仅仅因为没有报错,就在公开搜索响应中发送内部排序依据(原始人气度、销售速度、利润率或其分桶值)——竞争对手和爬虫会读取命中结果负载。
- UI 展示促销价,却按基础价格排序或筛选(反之亦然)——所有场景都应遵循同一套有效价格契约。
索引前检查项
索引记录前,请说明以下项目的状态是已就绪、暂定还是延期:
objectID的稳定性。- UI 使用的 Facet 及其规范化方式。
- 排名字段及其重要性。
- 排名指标精度:原始值、四舍五入值、分桶值或精选值。
- 可检索的显示字段。
- 公开响应允许列表:从可检索负载中排除内部排名字段。
- 选择一个有效价格属性,用于显示、排序、筛选和范围 Facet。
- 图片、URL、标题、价格、可用性或其他 UI 必需字段。
- 事件归因字段。
- UI 所需的库存、可用性或权限字段。
- 易变字段的更新负责人和频率。
电商记录模型策略
选择以下一种模式,并说明其权衡:
- 变体级记录:一条记录代表一种具体的可售变体,例如某个颜色/尺码 SKU。适用于用户需要按变体进行搜索、筛选、比较、定价或转化;颜色/尺码/可用性/图片必须准确;或需要进行细粒度更新的情况。如果 UI 应显示产品系列,请规划分组或 distinct 行为。
- 变体组级记录:一条记录将共享某个关键属性(例如颜色)的多个变体归为一组。适用于 UI 和商品运营通常以产品/颜色为单位,但筛选和图片需要比主产品记录更精确的情况。
- 产品级或主产品记录:一条记录代表基础产品,并包含所有变体。适用于商品运营、分析和 AI 行为应以产品为单位,且用户希望看到一个产品结果的情况。请记录筛选后显示正确变体所需的前端工作。
- 语言区域、地区、渠道或账户变体:当文本、价格、可用性、权限或事件差异足以改变搜索行为时,将其拆分为单独的记录或索引。
- 受保护的变体:切勿仅依赖 UI 隐藏。对权限敏感的变体需要使用受保护的筛选器、单独的索引或记录级访问策略。
对于每种模型,请说明其对文本相关性、Facet 准确性、商品运营控制、AI/个性化行为、分析聚合、更新成本、记录数量和 UI 复杂度的影响。
Academy 与客户教育对齐
需要有来源支持的指导时,请搜索公开的 Academy 资料,了解索引和数据就绪相关的学习目标;并搜索 Algolia 公开文档,了解记录、objectID、Facet、副本及当前实现细节。判断客户处于入门实现、生产就绪、优化还是 AI 就绪阶段。利用来源背景指导决策和提问;不要粘贴大段课程或文档内容。
成熟度阶段对应行为
- 入门实现:制定最简单且正确的记录规范,并且只询问样例记录、数据源负责人、
objectID候选项、必需筛选条件和主要排名目标。 - 生产就绪:补充环境命名、更新负责人、受保护字段、回滚/重新索引计划和验证查询。
- 优化:补充排名信号、查询分析、副本策略和受控的相关性测试。
- AI 就绪:验证语义字段、事件归因字段、权限、噪声属性,以及是否满足 NeuralSearch 或 Agent Studio 的前置条件。
交付内容
对于设计工作,请返回简明的索引规范,包含样例记录、记录模型策略、商品运营数据缺口报告、自定义排名指标映射和验证查询。对于代码工作,请实现该规范,并提供重新索引/更新路径以及验证命令或测试。