c# - RavenDB Map Reduce 非重复索引

标签 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 来说还很陌生并且正在努力寻找想法。如果我们在客户端保持简单的索引和分组,那么我们就无法保持分页的一致性。

有什么想法吗?

最佳答案

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

关于c# - RavenDB Map Reduce 非重复索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207590/

相关文章:

c# - WPF 文本框中正则表达式的用户输入验证

Matlab:按一定标准从矩阵中选择子矩阵

python - 使用条件语句返回数据帧的子集

hadoop - 从作业日志中查找 reducers 的数量

尝试访问通信端口时 C# 访问被拒绝?

c# - Maui-blazor 渐变闪屏

c# - 多个级别的特殊字符串模式的正则表达式

python - 索引多个数组

hadoop - 在 map reduce 的 reduce 端进行同机数据处理

java - mapreduce 作业的进度