我知道向Riak map/reduce job提供搜索结果是可能的。我有一桶要搜索的物品。然后,我需要使用map/reduce来处理顶部的数据,假设是100。简单的解决方案是搜索关键字,应用limit并使用100个键启动一个新的map/reduce作业。
然而,我想在Riak中做所有的工作-使用搜索直接启动map/reduce。我目前使用的是map/reduce初始化描述的here
"inputs": {
"bucket":"mybucket",
"query":"foo OR bar"
}有没有办法提供一个限制,使搜索不返回所有关键字,而只返回搜索的最匹配的关键字?如下所示:
"inputs": {
"bucket":"mybucket",
"query":"foo OR bar",
"limit": 10
}发布于 2014-05-13 23:23:18
这里的诀窍是确定哪100个关键点是“顶部”。由于映射阶段将在1/N个vnode上单独运行,并且一次只能看到一个对象,因此映射函数无法确定哪个将是总体上最重要的关键字。您需要执行reduce阶段的排序,并返回前100名。你可以把限制作为一个arg传递给MR到reduce阶段,这样你就不需要每次都重新创建函数了。This Question可能会为您提供一些相关信息
https://stackoverflow.com/questions/23500572
复制相似问题