RavenDB地图减少差异索引

本文关键字:索引 地图 RavenDB | 更新日期: 2023-09-27 18:26:23

我们有一个具有嵌套属性的对象,我们希望使其易于搜索。这已经足够简单了,但我们也希望基于多个字段聚合信息。就域名而言,除了卖家之外,我们有多笔交易的细节相同。我们需要将这些合并为一个结果,并在下一页显示卖家选项。然而,我们仍然需要能够根据初始页面上的卖家进行筛选。

我们尝试了下面的方法,试图在一行中收集多个卖家,但其中包含重复的卖家,并且创建索引需要很长时间。

Map = deals => deals.Select(deal => new
{
    Id = deal.ProductId,
    deal.ContractLength,
    Provider = deal.Provider.Id,
    Amount = deal.Amount
});
Reduce = deals => deals.GroupBy(result => new
{
    result.ProductId,
    result.ContractLength,
    result.Amount
}).Select(result => new
{
    result.Key.ProductId,
    result.Key.ContractLength,
    Provider = result.Select(x => x.Provider).Distinct(),
    result.Key.Amount
});

我不确定这是解决这个问题的最佳方法,但对Raven来说,这是一个全新的方法,正在努力寻找想法。如果我们保持索引简单,并在客户端分组,那么我们就无法保持分页的一致性。

有什么想法吗?

RavenDB地图减少差异索引

您正在对文档id进行分组。deal.Id,因此您永远不会实际生成跨多个文档的缩减。我不认为这是故意的。