javascript - 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()
{
}
解决方案
通常,结果是分页的。这意味着,不是一次返回所有结果,而是将它们分成几部分,每个部分(页面)发送一次。
例如,当您在 google.com 中搜索时,Google 不会返回所有 1,50,00,000.... 个结果,而是仅返回 10 个左右的结果。要获得接下来的 10 个结果,请单击页面底部分页菜单中的下一步按钮。
这样做是为了不让 API 和网络过载。想象一下包含 1,50,00,000 条记录的响应会有多大。
这就是发生在你身上的事情。在您收到的回复中,查看是否有包含下一页 URL 的记录,Microsoft 通常是这样做的。如果您调用该 URL,您将获得下一页。如果那不存在,请查看您调用的 URL 是否在某处有参数,您可以在其中选择页面。
推荐阅读
- android - 使用共享的过渡动画表单适配器类到另一个活动
- html - SVG viewBox 在 Chrome 但在 Edge 中无法正常工作
- c# - 在 WPF 饼图上显示带有绑定数据的自定义工具提示?
- android - Fragment pop back stack 和使用 trasaction 删除 Fragment 有什么区别?删除片段的最佳方法是什么?
- spring-boot - 错误:不兼容的 SockJS!主站使用:“1.4.0”,iframe:“1.0.0”
- javascript - 如何从服务器中选择随机用户?
- django - Django 是否在服务器端渲染 JS?
- reactjs - 将数据传递给子组件在反应中不起作用
- anylogic - Anylogic Z分数表
- arrays - 如何在本机反应中使用for循环一一获取数组对象