深度分页时,Bing Search API v5的预期行为是什么?

时间:2017-10-13 18:20:53

标签: bing-api azure-cognitive-services

我对网页和查询cameras执行bing API搜索。

结果的第一个“页面”(offset=0count=50)返回49个实际结果。它还会返回totalEstimatedMatches 114000000 - 1.14亿。整洁,这是很多结果。

结果的第二个“页面”(offset=49count=50)执行类似...

...直到我到达第7页(offset=314count=50)。突然totalEstimatedMatches544

每页返回的实际结果数量从那里急剧下降。事实上,超过43个“页面”的结果,我得到413个实际结果,其中只有311个具有唯一的URL。

少量网页后,任何查询似乎都会发生这种情况。

这是预期的行为吗? API文档中没有提示详尽的分页应该导致这种行为......但是你有它。

以下是截图:

strange behavior

2 个答案:

答案 0 :(得分:1)

这似乎是预期的行为。 Web搜索API并非搜寻器API,因此它仅提供算法认为与人类相关的结果。简而言之,大多数人不会浏览多于几页的结果,而且他们希望在第一页上找到相关的结果。

如果您可以检索成千上万的结果,则只需复制其搜索索引,必应就会倒闭。

搜索索引似乎具有政治和经济实力,据我所知,全世界只有四个相关的搜索索引:来自Google,来自Microsoft(Bing),来自俄罗斯和来自中国。 那些控制搜索的人控制着Spice ...;-)

答案 1 :(得分:0)

每次调用API时,搜索API都会从结果集中获取一组可能的匹配项,然后根据不同的参数(例如垃圾邮件,重复项,安全搜索设置等)筛选出结果,最后离开最终结果集。如果过滤和优化后的最终结果超过 count 参数,则会返回等于 count 的结果数。如果参数大于最终结果集 count ,则返回最终结果集,该结果集将小于 count 参数。如果再次调用搜索API,则传入offset参数以获取下一组结果,然后在下一组结果上再次发生过滤过程,这意味着它也可能小于计数。

您不应期望为每个API调用始终返回完整的 count 参数结果数。如果需要超出返回数字的其他搜索结果,则应再次调用查询,传入偏移参数,其值等于先前API调用中返回的结果数。这也意味着在进行后续API调用时,偏移参数永远不应该是硬编码值,并且应始终根据先前查询的结果进行计算。

totalEstimatedMatches 还会增加Bing Search API结果的混乱。单词“估计”是重要的,因为该数字是在上述过滤之前基于初始快速结果集的估计。此外, totalEstimatedMatches 值可以在您通过增加偏移值进行后续API调用来遍历结果集时发生更改。 totalEstimatedMatches 应仅用作指示可能结果集大小的粗略指南,不应用于确定最终返回的结果数。要查询所有可能的结果,您应该继续进行API调用,传入偏移量,其值为先前调用中返回的结果总和,直到该总和大于 totalEstimatedMatches 最新的API调用。

请注意,您可以通过直接访问bing.com并使用https://www.bing.com/search?q=bill+gates&count=50等查询来查看相同的行为。请注意,您将获得大约34个结果, totalEstimatedMatches 约为567,000(截至2017年6月有效,未来的搜索可能会更改),如果您点击下一页'箭头您将看到执行的下一个查询将从第一个查询中返回的34的偏移量开始(即https://www.bing.com/search?q=bill+gates&count=50&first=34)。如果您再次点击“下一步”几次,您可能会看到 totalEstimatedMatches 也会在不同页面之间发生变化。