RavenDB Map减少了不同的索引

时间:2015-12-10 17:00:30

标签: c# indexing mapreduce ravendb lucene.net

我们有一个具有嵌套属性的对象,我们希望这些属性可以轻松搜索。这很容易实现,但我们也希望基于多个字段聚合信息。就域名而言,我们有多个交易,除卖家外,其具有相同的详细信息。我们需要将这些作为单个结果合并,并在下一页显示卖家选项。但是,我们仍然需要能够在初始页面上根据卖家进行过滤。

我们尝试了类似下面的内容,尝试在一行中收集多个卖家,但它包含重复项,并且索引的创建需要永远。

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来说还是比较新的,并且在努力寻找创意。如果我们保持索引简单并在客户端进行分组,那么我们就不能保持分页一致。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在对文档ID进行分组。 deal.Id,因此您永远不会在多个文档中实际生成减少量。 我不认为这是有意的。