Skip to main content
Business Search 的每一页结果都是对当前索引的一次新搜索,而不是固定快照。

如何请求下一页

offset 表示要跳过的结果数量,limit 表示每页大小。offset 从 0 开始且无上限。limit 默认为 10,其上限取决于模式: 下面的请求体跳过前 20 条结果并请求接下来的 20 条:
翻页时保持类目、数据源、模式、查询和视图不变,只改变 offset。改动其他任何属性都等于开始一次不同的搜索。 offset 超过 meta.matched 时不会返回空页,而是以 HTTP 500 和 error_code backend_search_failed 失败。因此请在返回不足一页时停止翻页,并把这种 500 当作结果集已到末尾,而不是服务故障。 索引每日刷新,因此结果及其顺序可能在不同请求之间发生变化。某次运行中位于第 1 页的记录,在下一次运行中可能出现在第 2 页。

如何解读响应元数据

  • meta.offsetmeta.limit 回显请求中的分页参数。
  • documents.length 是本页实际返回的记录数,可能小于 limit
  • meta.matched 表示本次搜索触及的匹配数量。请把它当作下界而非完整计数,对文本搜索和自然语言搜索尤其如此。它可能随模式或请求而变化。
  • meta.coverage_percent 表示索引中作出响应的比例。低于 100 表示覆盖不完整。等于 100 也不代表已返回全部相关记录或所有字段都有值。

meta.matched 不能用来做什么

不要用 meta.matched 来估算数据集规模,也不要据此告诉用户恰好有这么多公司或人物符合他们的意图。它是搜索触及范围的数值,不是普查结果。 如果成功响应中没有任何文档,表示本次请求没有匹配结果,而不是该实体不存在。
在覆盖率重要的场景中,请向读者说明覆盖情况。基于 coverage_percent 低于 100 的响应生成的结果页面,应说明结果集不完整,而不是呈现为完整结果。

常见问题

翻页循环应在什么时候停止

documents 返回为空或短于 limit 时停止。不要一直翻到 offset 达到 meta.matched,因为 meta.matched 是下界,并且可能在不同请求之间变化。

为什么相同的 offset 返回了不同的记录

每一页都是针对当前索引的一次新搜索。如果任务需要稳定的结果集,请在一次运行中采集完所有页面,并按 bright_idsource 去重,而不要在之后重新获取某一页。

limit 最大可以设置为多少

limit 默认为 10。Ludicrous 与 Instant 的单页上限为 100,Smart 为 10。该值表示单页请求的最大数量,因此返回的数组可能短于你发送的值。

索引多久更新一次

每日更新。数据源中新增或变更的记录会在下一次每日刷新后出现在 Business Search 结果中。