目前我正在创建一个应用程序,我需要调用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或更多结果?
答案 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个结果的下一页的信息。
基于此,您需要做一些事情:
$top
参数的值。因为您没有指定任何值,所以会返回默认的记录数(即50)。