如何在RavenDB中统计公开Topic的Top10最常用标签?
统计公开主题的最常用标签
其实不用把Visibility塞进分组键里,更简单的方式是先过滤出所有公开的主题,再对这些主题的标签做分组统计,逻辑更清晰,结果也精准。
完整的查询代码如下:
session.Query<Topic>() .Where(t => t.Visibility == Visibility.Public) // 先筛选公开主题 .GroupByArrayValues(t => t.Tags) // 按标签分组 .Select(grouping => new { Count = grouping.Count(), Text = grouping.Key }) .OrderByDescending(grouping => grouping.Count) .ToList();
如果非要把Visibility作为分组条件(虽然没必要),也可以这么写,但最后还要额外过滤分组键里的公开项,反而多一步:
session.Query<Topic>() .GroupBy(t => new { t.Visibility, Tag = t.Tags }) // 同时按可见性和标签分组 .Select(grouping => new { grouping.Key.Visibility, grouping.Key.Tag, Count = grouping.Count() }) .Where(result => result.Visibility == Visibility.Public) // 只保留公开的分组 .OrderByDescending(result => result.Count) .ToList();
显然第一种方式更高效,提前过滤掉私有主题后,后续分组处理的数据量更少。
内容的提问来源于stack exchange,提问作者dubik
相关产品推荐
相关产品推荐

