2017-10-12 87 views
1

目前我正在創建一個應用程序,我需要調用API以進行天藍色搜索。調用此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分以上的結果?

回答

4

這是預期的行爲。從documentation(見文檔關於$top查詢參數):

$頂部=#(可選)

搜索結果的數量來獲取。 默認爲50。當通過POST調用 時,此參數被命名爲top而不是$ top。 如果 指定大於1000的值,並有超過1000個 結果,只有前1000個結果將返回,用 鏈接結果的下一頁沿(見@ odata.nextLink在下面的例子中 )。

Azure的搜索使用服務器端分頁,以防止 一次檢索文件太多疑問。默認頁面大小爲50, ,而最大頁面大小爲1000.這意味着默認搜索 如果您未指定$ top,則文檔最多返回50個結果。如果 有超過50個結果,響應包括信息檢索 至多50個結果(見@ odata.nextLink和 @在下面的例子search.nextPageParameters下一個頁面。同樣,如果您 指定值時比1000 $頂部,有超過 1000個結果,僅前1000個結果返回,與 信息檢索最多1000個結果的翻頁一起。在此基礎上

,有你需要做的幾件事:

  1. 指定$top參數的值。由於您沒有指定任何值,因此會返回默認的記錄數(即50)。
  2. 由於單個請求最多隻能抓取1000條記錄,而且您提到該索引包含的記錄超過1000條,因此您需要發出多個查詢來抓取分頁結果。
+0

嗨,感謝您的回覆。對於相同的操作有另一個問題。請看看:https://stackoverflow.com/questions/46714067/how-to-get-a-link-to-fetch-next-records-from-azure-search –