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 提供指导。
我想通过 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 提供指导。