Rest API搜索结果与搜索页面返回的结果不同

时间:2018-11-08 17:39:39

标签: javascript sharepoint-2013

我有一个Search Rest API,当我通过Sharepoint Designer运行它时,如果结果与Share point网站上“搜索”页面返回的结果相同,则无法获得相同的编号,我也曾尝试使用其他源ID,尝试使用结果源中的默认源ID,但是我总是得到相同的结果,所以我不确定自己做错了什么。 我的其他想法是,是否可以通过内置到共享点的默认搜索功能获取所有结果?

 var ct = new SP.ClientContext.get_current();
 var keywordQuery = new Microsoft.SharePoint.Client.Search.Query.KeywordQuery(ct);

 var queryStr = ctx.DataProvider.get_currentQueryState().k;
 keywordQuery.set_queryText(queryStr);


 keywordQuery.set_trimDuplicates(false);  
 keywordQuery.set_enableSorting(true);                                  
 keywordQuery.set_sourceId=("xxxxxx-xxxx-xxxx-xxx-xxxxxxx");  
 keywordQuery.set_rowLimit(500);


 keywordQuery.set_trimDuplicates(false);

 var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(ct);
 var results = searchExecutor.executeQuery(keywordQuery);


   ct.executeQueryAsync(onQuerySuccess, onQueryFail);

   function onQuerySuccess() 
      {
      results.m_value.ResultTables[1].ResultRows.forEach(function (row)
      {
       var Aname1 = row.name;
       console.log(row);
                if (!$isNull(Aname1))

           {

           var name= Aname1;
               console.log(name);

           }


      });



      }



       function onQueryFail() 
       {

       }

1 个答案:

答案 0 :(得分:0)

通常,对结果进行分页。这意味着,不是将所有结果立即返回,而是将它们分为几部分,并且每个部分(页面)都发送一次。

例如,当您在google.com中搜索时,Google不会返回全部1,50,00,000 ....个结果,而是仅返回10个左右的结果。要获取下10个结果,请在页面底部的分页菜单中单击下一步按钮。

这样做是为了避免API和网络过载。想象一下,有1,50,00,000条记录的响应将有多大。

这就是你正在发生的事情。在收到的响应中,查看是否存在下一页具有URL的记录,Microsoft通常以这种方式进行操作。如果您调用该URL,则会得到下一页。如果那不存在,请查看您调用的URL是否在某处有参数,您可以在其中选择页面。