1

我知道可以为 Riak 的 map/reduce 作业提供 Search 的结果。我有一桶要搜索的项目。然后,我需要使用 map/reduce 处理顶部,比如说 100。天真的解决方案是搜索关键字,应用限制并使用一组 100 个键启动新的 map/reduce 作业。

但是,我想在 Riak 中完成所有工作 - 直接通过搜索启动 map/reduce。我目前使用这里描述的 map/reduce init :

"inputs": {
    "bucket":"mybucket",
    "query":"foo OR bar"
}

有没有办法提供限制,以便搜索不返回所有键,而只返回搜索的顶部匹配项?像这样的东西:

"inputs": {
    "bucket":"mybucket",
    "query":"foo OR bar",
    "limit": 10
}
4

1 回答 1

0

这里的技巧是确定哪 100 个键是“顶部”。由于 map 阶段将在 1/N 个 vnode 上单独运行,并且一次只能看到 1 个对象,因此 map 函数无法确定哪些是总体上的顶级键。您将需要减少阶段排序并返回前 100 个。您可以将限制作为 arg 传递给 MR,这样您就不需要每次都重新创建函数。 这个问题可能会为您提供一些相关信息

于 2014-05-13T15:23:18.107 回答