gpt4 book ai didi

mapreduce - Couchdb 中的重复数据删除/匹配?

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

我在 couchdb 中有文件。架构如下所示:

userId
email
personal_blog_url
telephone

我假设两个用户实际上是同一个人,只要他们有
  • 电子邮件或
  • Personal_blog_url 或
  • 电话

  • 相同。

    我创建了 3 个 View ,它们基本上将 email/blog_url/telephone 映射到 userIds,然后将 userIds 组合到同一键下的组中,例如,
    _view/by_email:
    ----------------------------------
    key values
    a_email@gmail.com [123, 345]
    b_email@gmail.com [23, 45, 333]

    _view/by_blog_url:
    ----------------------------------
    key values
    http://myblog.com [23, 45]
    http://mysite.com/ss [2, 123, 345]

    _view/by_telephone:
    ----------------------------------
    key values
    232-932-9088 [2, 123]
    000-111-9999 [45, 1234]
    999-999-0000 [1]

    我的问题:
  • 如何将来自 3 个不同 View 的结果合并到不包含重复项的最终用户表/ View 中?
  • 或者在 couchdb 中进行这种重复数据删除是否是一个好习惯?
  • 或者在沙发上进行重复数据删除的好方法是什么?

  • 附:在最终 View 中,假设对于所有欺骗者,我们只保留最小的 userId。

    谢谢。

    最佳答案

    好问题。也许你可以听听_changes并在您建议的 View ( by_* ) 中搜索您希望对真实用户唯一的字段。

  • 将 View 合并为一个(在一张 map 中发出不同的字段):

    功能(文档){
    if (!doc.email || !doc.personal_blog_url || !doc.telephone) 返回;
    发出([1, doc.email], [doc._id]);
    发出([2,doc.personal_blog_url],[doc._id]);
    发出([3, doc.telephone], [doc._id]);
    }
  • 合并reduce中的id列表
  • 当更改提要中的新文档到达时,您可以使用 keys=[[1, email], [2, personal_blog_url], ...] 查询 View 。并合并三个列表。如果其最小 id 小于更改后的文档,则更新字段 realId , 否则使用更改后的 id 更新列表中的文档。

  • 我建议使用不同的文件来存储 { userId, realId }关系。

    关于mapreduce - Couchdb 中的重复数据删除/匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017256/

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