我想通过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会给出未更改/有序列表,这样我就可以通过运行jump to 80th list
来获取ContinueSearchAsync()
的相同文档方法80次?
我是否必须为我的要求维护另一个查找表?
答案 0 :(得分:0)
*是通配符查询。匹配通配符查询的文档在排名中具有相同的常量分数,因为无法测量文档与的接近程度。此外,不保证相同分数文档之间的顺序。匹配&#39; &#39;即使发出相同的查询,也可以在一个响应中排名第一,在另一个响应中排在第7位。
为了获得通配符查询的一致排序,我建议传入$ orderBy子句,例如search = *&amp; $ orderBy = id asc。 Azure Search确实支持通过$ skip和$ top进行分页。这个document提供了指导。