蔚蓝搜索。分页时如何获得结果计数
Azure Search. How to get result counts when having pagination
假设我在 Azure 搜索集合中有以下架构,有 100 条记录。
{
"id": '1',
"Status" : "Available",
"name" : "demo 1"
},
{
"id": '2',
"Status" : "Available",
"name" : "demo 1"
},
{
"id": '3',
"Status" : "Removed",
"name" : "demo 1"
},
{
"id": '4',
"Status" : "Booked",
"name" : "demo 4"
}
在我的状态字段中,我可以有三个不同的值,
"Booked", "Available", "Removed".
现在我使用 Azure 搜索中的 Skip 和 Top 通过分页获取数据。
然而,就像在 ElasticSearch 聚合功能中一样,Azure 搜索中是否有一种方法可以获取状态为“已预订”、“可用”或“未删除”等的站点总数。
因为我无法在客户端进行计数,因为我的记录数量有限,而不是 Azure 搜索中的所有记录。
创建索引时,将status
字段设为facetable
和filterable
。然后使用 $filter=status ne 'Booked'
发出关于状态的方面查询。这将为您提供除 Booked 以外的每个状态类别中的文档总数,与分页无关。
如果您使用搜索索引客户端对象 (Microsoft.Azure.Search.SearchIndexClient) 来搜索您的文档,您可以提供一个对象作为参数 ( Microsoft.Azure.Search.Models.SearchParameters) 包含一个 属性 IncludeTotalResultCount
。一旦将此 属性 设置为 true 并调用方法 Documents.Search(...)
传递参数对象,您的响应对象 (Microsoft.Azure.Search.DocumentSearchResult) 将包含一个值属性 计数考虑过滤器的总计数,无论分页选择了多少项目。
SearchParameters searchParameter = new SearchParameters
{
Filter = "organizationId eq '1'",
Skip = 0,
Top = 20,
IncludeTotalResultCount = true
};
using (var client = new SearchIndexClient(...)
{
DocumentSearchResult response = client.Documents.Search("*", searchParameter);
//pagination items
var collection = response.Results.ToArray();
//total items
var counter = response.Count;
}
假设我在 Azure 搜索集合中有以下架构,有 100 条记录。
{
"id": '1',
"Status" : "Available",
"name" : "demo 1"
},
{
"id": '2',
"Status" : "Available",
"name" : "demo 1"
},
{
"id": '3',
"Status" : "Removed",
"name" : "demo 1"
},
{
"id": '4',
"Status" : "Booked",
"name" : "demo 4"
}
在我的状态字段中,我可以有三个不同的值, "Booked", "Available", "Removed".
现在我使用 Azure 搜索中的 Skip 和 Top 通过分页获取数据。
然而,就像在 ElasticSearch 聚合功能中一样,Azure 搜索中是否有一种方法可以获取状态为“已预订”、“可用”或“未删除”等的站点总数。 因为我无法在客户端进行计数,因为我的记录数量有限,而不是 Azure 搜索中的所有记录。
创建索引时,将status
字段设为facetable
和filterable
。然后使用 $filter=status ne 'Booked'
发出关于状态的方面查询。这将为您提供除 Booked 以外的每个状态类别中的文档总数,与分页无关。
如果您使用搜索索引客户端对象 (Microsoft.Azure.Search.SearchIndexClient) 来搜索您的文档,您可以提供一个对象作为参数 ( Microsoft.Azure.Search.Models.SearchParameters) 包含一个 属性 IncludeTotalResultCount
。一旦将此 属性 设置为 true 并调用方法 Documents.Search(...)
传递参数对象,您的响应对象 (Microsoft.Azure.Search.DocumentSearchResult) 将包含一个值属性 计数考虑过滤器的总计数,无论分页选择了多少项目。
SearchParameters searchParameter = new SearchParameters
{
Filter = "organizationId eq '1'",
Skip = 0,
Top = 20,
IncludeTotalResultCount = true
};
using (var client = new SearchIndexClient(...)
{
DocumentSearchResult response = client.Documents.Search("*", searchParameter);
//pagination items
var collection = response.Results.ToArray();
//total items
var counter = response.Count;
}