【问题标题】:Does Azure Search result guarantee order for * query?Azure 搜索结果是否保证 * 查询的顺序?
【发布时间】:2017-08-17 04:12:42
【问题描述】:

我想通过 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 是否会提供未更改/有序列表,以便我可以通过运行 ContinueSearchAsync() 方法 80 次来获得 jump to 80th list 的相同文档?

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

【问题讨论】:

    标签: c# azure azure-cognitive-search azure-search-.net-sdk


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2014-08-05
      • 1970-01-01
      • 2017-09-14
      • 2019-05-12
      相关资源
      最近更新 更多