gpt4 book ai didi

mapreduce - 您如何在 Couchbase 中按值对 _View_ 的结果进行排序?

转载 作者:行者123 更新时间:2023-12-01 04:01:22 25 4
gpt4 key购买 nike

所以根据我在 Couchbase 中的理解,人们可以使用

descending=true

但在我的情况下,我想按值排序。考虑json格式的Twitter数据,我的问题是 最受欢迎的用户提到了什么?

每条推文的结构如下:
{
"text": "",
"entities" : {
"hashtags" : [ ... ],
"user_mentions" : [ ...],
"urls" : [ ... ]
}

所以在我重用 Map 函数之前使用过 MongoDB 并稍微修改它以在 Couchbase 中可用,如下所示:
function (doc, meta) {
if (!doc.entities) { return; }

doc.entities.user_mentions.forEach(
function(mention) {
if (mention.screen_name !== undefined) {
emit(mention.screen_name, null);
}
}
)
}

然后我使用了reduce函数 _count计算所有 screen_name发生。现在我的问题是 如何按计数值而不是键排序?

谢谢

最佳答案

简短的回答是您不能按值对您查看的结果进行排序。您只能按关键字排序。

一些解决方法是:

  • 在将数据插入 Couchbase 之前分析数据并为您感兴趣的值创建一个计数器(在您的案例中提及)
  • 如果 View 的大小对于客户端排序是可接受的,则使用您必须对应用程序大小进行排序的 View 。

  • 下面的 JS 代码调用一个 View ,对结果进行排序,并打印出 10 个 HitTest 门的主题(hashtags):
    var http =  require('http');

    var options = {
    host: '127.0.0.1',
    port: 8092,
    path: '/social/_design/dev_tags/_view/tags?full_set=true&connection_timeout=60000&group=true',
    method: 'GET'
    }

    http.request(
    options,
    function(res) {
    var buf = new Buffer(0);
    res.on('data', function(data) {
    buf += data;
    });
    res.on('end', function() {
    var tweets = JSON.parse(buf);
    var rows = tweets.rows;
    rows.sort( function (a,b){ return b.value - a.value }
    );


    for ( var i = 0; i < 10; i++ ) {
    console.log( rows[i] );
    }
    });
    }
    ).end();

    同时,我正在寻找其他选择来实现这一目标

    关于mapreduce - 您如何在 Couchbase 中按值对 _View_ 的结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292609/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com