如何从天蓝色搜索中获取所有结果?

时间:2017-10-12 13:50:43

标签: azure logic azure-sql-database azure-search

目前我正在创建一个应用程序,我需要调用API进行azure搜索。调用此API:

https://<searchServiceName>.search.windows.net/indexes/<index-name>/docs/search?api-version=2016-09-01

还提供搜索查询所需的所有参数:

(test||test||test||test||test||test||test)+ Contacts+Campaigns+Companies+Targets+Complanits+Claims+Activities+Opportunities+Completed Activities

问题是,表中总共有1127行与此特定搜索相关。但是我只有前五十个跟随JSON对象输出。

"@search.nextPageParameters": {
        "search": "(test||test||test||test||test||test||test)+ Contacts+Campaigns+Companies+Targets+Complanits+Claims+Activities+Opportunities+Completed Activities",
        "skip": 50}

我应该在查询中做出哪些更改,以便获得所有1127或更多结果?

1 个答案:

答案 0 :(得分:5)

这是预期的行为。来自documentation(请参阅有关$top查询参数的文档):

  

$ top =#(可选)

     

要检索的搜索结果数。 默认为50 。什么时候   通过POST调用,此参数名为top而不是$ top。 如果你   指定大于1000的值并且大于1000   结果,只返回前1000个结果,同时返回一个   链接到结果的下一页(请参阅示例中的@ odata.nextLink   下文)。

     

Azure搜索使用服务器端分页来阻止查询   一次检索太多文档。默认页面大小为50,   而最大页面大小为1000.这意味着默认搜索   如果您未指定$ top,则文档最多返回50个结果。如果   有超过50个结果,响应包括信息   检索最多50个结果的下一页(参见@ odata.nextLink和   @ search.nextPageParameters在下面的例子中。同样,如果你   为$ top指定一个大于1000的值,并且有多个   1000个结果,只返回前1000个结果,以及   用于检索最多1000个结果的下一页的信息。

基于此,您需要做一些事情:

  1. 指定$top参数的值。因为您没有指定任何值,所以会返回默认的记录数(即50)。
  2. 由于单个请求最多只能获取1000条记录,并且您提到该索引包含的记录超过1000条,因此您需要发出多个查询来获取分页结果。