首页 > 解决方案 > Rest API 搜索结果与搜索页面返回的结果不一样

问题描述

我有一个搜索休息 API,当我通过共享点设计器运行它时,如果共享点站点上的搜索页面返回的结果,我没有得到相同的数字,我尝试使用不同的源 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() 
       {

       }

标签: javascriptsharepoint-2013

解决方案


通常,结果是分页的。这意味着,不是一次返回所有结果,而是将它们分成几部分,每个部分(页面)发送一次。

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

这样做是为了不让 API 和网络过载。想象一下包含 1,50,00,000 条记录的响应会有多大。

这就是发生在你身上的事情。在您收到的回复中,查看是否有包含下一页 URL 的记录,Microsoft 通常是这样做的。如果您调用该 URL,您将获得下一页。如果那不存在,请查看您调用的 URL 是否在某处有参数,您可以在其中选择页面。


推荐阅读