我知道可以使用搜索结果提供Riak map / reduce作业。我有一桶我要搜索的物品。然后,我需要使用map / reduce处理顶部,比方说100。天真的解决方案是搜索关键字,应用限制并使用一组100个密钥启动新的map / reduce作业。
但是,我想在Riak做整个工作 - 直接用搜索启动地图/减少。我目前使用了{/ 3}}所描述的map / reduce init:
"inputs": {
"bucket":"mybucket",
"query":"foo OR bar"
}
有没有办法提供限制,以便搜索不会返回所有键,而只返回搜索的最高匹配?像这样:
"inputs": {
"bucket":"mybucket",
"query":"foo OR bar",
"limit": 10
}
答案 0 :(得分:0)
这里的诀窍是确定哪100个键是'顶部'。由于地图阶段将在1 / N vnode上单独运行,并且一次只能看到1个对象,因此map函数无法确定哪个是整个顶部键。您需要减少相位排序并返回前100个。您可以将限制传递给MR作为减少阶段的arg,因此您不需要每次都重新创建该函数。 This Question可能会为您提供一些相关信息