Azure 搜索结果是否保证 * 查询的顺序?

Does Azure Search result guarantee order for * query?

我想通过 AzSearch C# SDK 管理 AzSearch 文档(索引项)。

我尝试做的是连续按查询结果(主要是 * 结果)列出文档并编辑它们的值。

查询结果列表如下;

public async Task<IEnumerable<MyIndexModel>> GetListAsync(string query, bool isNext = false)
{
    if (string.IsNullOrEmpty(query)) query = "*";
    DocumentSearchResult list;
    if (!isNext)
    {
        list = await _indexClient.Documents.SearchAsync(query);
    }
    else
    {
        list = await _indexClient.Documents.ContinueSearchAsync(ContinuationToken);
    }
    ContinuationToken = list.ContinuationToken;
    return list.Results.Select(o => o.Document.ToIndexModel());
}

一个要求是到第n个项目列表。由于AzSearch不提供分页,我想知道它是否提供有序列表。

如果我们 更新文档计数(不进一步索引),AzSearch 是否提供 unchanged/ordered 列表以便我可以为 jump to 80th list 获取相同的文档通过 运行 ContinueSearchAsync() 方法 80 次?

我是否必须为我的要求维护另一个查找 table?

* 是通配符查询。匹配通配符查询的文档在排名中获得相同的恒定分数,因为无法衡量文档与 的接近程度。此外,不保证相同分数文档之间的顺序。匹配“”的文档可以在一个响应中排在第 1 位,在另一个响应中排在第 7 位,即使发出相同的查询也是如此。

为了获得一致的通配符查询顺序,我建议传入一个 $orderBy 子句,例如 search=*&$orderBy=id asc。 Azure 搜索不支持通过 $skip 和 $top 进行分页。 document 提供指导。