9

有人可以指出如何实现这一点的正确方向吗?

到目前为止,我可以查询我的索引并得到响应

SearchIndexClient indexClient = service.Indexes.GetClient(indexName);
 SearchParameters sp = new SearchParameters()
        {
            Facets = new string[] { "Brand", "Price,values:10|25|100|500|1000|2500" },
            Filter = AzureUtils.BuildFilter(brand, priceFrom, priceTo),
            OrderBy = new string[] { "" },
            IncludeTotalResultCount = true,
            Top = 9,
            SearchMode = SearchMode.Any
        };
        DocumentSearchResponse<MyClass> response = response = indexClient.Documents.Search<MyClass>(searchText, sp);

结果返回时 response.ContinuationToken 为空

如何让我的索引返回 response.ContinuationToken 属性的值。

另外,我如何实现这个来获取接下来的 9 个结果?

谢谢

4

2 回答 2

10

TL;DR 版本:最安全的假设是搜索响应中是否存在继续标记完全不受您的控制。

SearchContinuationToken并不意味着对结果进行分页。这就是目的SearchParameters.TopSearchParameters.Skip目的。相反,您可以将延续令牌视为一种机制,用于恢复由于可能的任意原因而无法在单个请求中完成的搜索。MSDN 上的文档提到页面大小是原因,但这不应被理解为ContinueSearch. 原则上,Azure Search 交还延续令牌可能还有其他原因。无论出于何种原因,如果您想编写一个健壮的客户端,您应该准备好处理延续令牌,无论Top您的结果计数或任何其他因素如何。

于 2015-11-26T01:10:39.173 回答
10

我在这里找到了答案 -链接

除非您请求的结果多于页面大小,否则此属性将为空。当您未指定 Top 并且有超过 50 个结果(默认页面大小为 50)时,或者当您为 Top 指定大于 1000 的值并且有超过 1000 个结果(最大页面大小为 1000)时,可能会发生这种情况. 无论哪种情况,您都可以将此属性的值传递给 ContinueSearchAsync 方法以检索下一页结果。

如果他们像我一样被卡住,我希望它可以帮助其他人

于 2015-11-21T09:44:39.113 回答