【问题标题】:Bing Image Search API returns duplicate reults必应图像搜索 API 返回重复的结果
【发布时间】:2016-12-03 16:42:05
【问题描述】:

Bing Image Search API 返回offset > 200 or 300 的所有重复结果。这会花钱,因为浪费了 API 调用。如果没有更多结果,它应该停止返回结果。

【问题讨论】:

    标签: api azure search bing microsoft-cognitive


    【解决方案1】:

    如果 Bing Image Search API 在 offset 值大于可用结果的数量时停止返回结果会很好,但这不是 API 的工作方式。如果您查看Image Search API Reference,用户应该在第一个请求中检查totalEstimatedMatches 参数,并确保offset 值具有可接受的值,然后再发出后续请求:

    偏移量应小于 (totalEstimatedMatches - count)。

    因此,如果您执行此检查,您可以决定何时停止发出新请求。如果offset 超过了结果的数量,看起来API 只是返回最后一个count 结果,这将解释你得到的“重复结果”。

    【讨论】:

    • KYT,这似乎不是答案。首先,totalEstimatedMatches 完全不可靠。对于每个连续的结果页面,该值可能会发生很大变化。其次,我已经看到即使重复的结果占据了后面的页面,新的结果仍然不时出现。例如,第 10 页可能有 29 个重复项和一个新项目,那么第 11 页可能有 25 个重复项和 5 个新项目。似乎无法知道您何时达到了不同结果的终点。
    • P.S.视频和图像搜索结果包含一个属性“nextOffsetAddCount”(v7 更改为“nextOffset”并稍微改变了含义。)该字段的目的是消除欺骗。但是,它似乎不适用于网页搜索。
    • @ElroyFlynn 该问题的发布者担心浪费 api 调用。避免浪费 api 调用的唯一方法是检查 totalEstimatedMatches ,无论它有多大变化,它仍然是人们必须用来决定是否进行另一次调用的值。这是避免浪费 api 调用的唯一解决方案,并且直接来自文档。 nextOffsetAddCount 用于在分页时消除重复项(您描述的情况,并且它也不能可靠地执行此操作),但是当偏移量超过可用结果的数量时,它不会防止浪费的 api 调用。
    • OP 没有提到他是否尊重 totalEstimatedMatches。无论如何,根据我的经验,即使 offset totalEstimatedMatches - count 也会返回新值。