【问题标题】:Common ways for pair matching of users in a database?数据库中用户配对匹配的常用方法?
【发布时间】:2020-11-23 04:12:12
【问题描述】:

希望你平安无事! 如果有用户数据库,我有一个关于配对匹配的常规或常见方法的问题:假设每个用户都有一些属性,并且在匹配时,每个用户可以更改过滤选项以仅匹配那些适合自己的人需求(所以用户之间存在相互选择),我们希望尽可能精确地匹配1000个用户。

例如,假设每个用户有 3 个属性:性别(女/男/其他),学习水平(初级/中级/高级)和年级(大一/大二/初级/高级),以及匹配时,每个用户可以选择只匹配他们选择的性别、学习水平和年级的人。 当关注 1 个用户时,我猜想,从数据库的角度来看,我们可以在命令中使用过滤选项,并获取同时满足“我的要求”和“我符合他们的要求”的用户列表?但是,我认为当匹配阶段同时有 1000 多个用户时,这会是缓慢和异步的问题?

我在这里看到另一个帖子讨论了开花算法或贪心算法,如果查看图表,这看起来很酷。在这种情况下它们可行吗?我猜如果两个用户同时满足两个需求,他们在两个节点之间会有一条边,边的值可以是3个属性的综合匹配分数?

无论如何,我想知道是否有一种通用方法可以同时与至少 1000 多个用户进行精确匹配?

非常感谢!

【问题讨论】:

    标签: database algorithm data-structures database-design


    【解决方案1】:

    如果要求每个匹配项必须具有完全相同的属性,那么解决方案相当简单;只需进行多条件排序(例如,首先按性别排序,然后在每个性别类别中按学习水平排序等)并将相同的用户配对。

    但是,在随机数据集中,您不太可能为所有用户找到完美匹配。在这种情况下,您需要根据每个类别的匹配程度来获得分数对,并使用更复杂的算法来最大化您的整体匹配。您会做什么在很大程度上取决于您的用例和用户群规模。老实说,1000 个用户对于现代计算机来说是一个非常小的数字。几乎任何多项式时间方法(包括您提到的开花)都可以正常工作。

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 2021-09-13
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多