Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django为约会应用程序匹配设计模型_Django_Django Models - Fatal编程技术网

Django为约会应用程序匹配设计模型

Django为约会应用程序匹配设计模型,django,django-models,Django,Django Models,我正在为一个hackathon项目开发一个约会应用程序。我们有用户填写的一系列问题,然后每隔几天我们将发送建议匹配。如果有人对这些匹配算法有很好的教程,我们将不胜感激。一个想法是为每个问题分配一个分值,然后做一个测试 def comparison(person_a,person_b)函数,您在其中迭代这些问题,如果有一个常见的答案,您可以添加一个点。所以分数越高,比赛就越好。到目前为止,我了解这一点,但我正在努力了解如何将这些数据保存到数据库中 在python中,我可以选择每个用户,然后使用这个

我正在为一个hackathon项目开发一个约会应用程序。我们有用户填写的一系列问题,然后每隔几天我们将发送建议匹配。如果有人对这些匹配算法有很好的教程,我们将不胜感激。一个想法是为每个问题分配一个分值,然后做一个测试 def comparison(person_a,person_b)函数,您在其中迭代这些问题,如果有一个常见的答案,您可以添加一个点。所以分数越高,比赛就越好。到目前为止,我了解这一点,但我正在努力了解如何将这些数据保存到数据库中

在python中,我可以选择每个用户,然后使用这个比较函数遍历所有其他用户,并为每个人创建一个字典,列出所有其他用户和他们的分数。然后,为了建议匹配,我反复浏览字典列表,如果那个人还没有与那个人匹配,那么就进行匹配

person1_dictionary_of_matches = {‘person2’: 3,  ‘person3’: 5,  ‘person4’: 10,  ‘person5’: 12, ‘person6’: 2,……,‘person200’:10}
person_1_list_of_prior_matches = [‘person3’, 'person4']
我正在努力研究如何在django中表达这一点。我可以有一群用户,并制作一个匹配模型,如:

class Match(Model):
     person1 = models.ForeignKey(User)
     person2 = models.ForeignKey(User)
     score = models.PositiveIntegerField()
在这里,我进行迭代并保存所有成对的分数

然后做
person\u matches=Match.objectsfilter(person1=sarah,person2!=sarah)。按('score')排序。排除(过去匹配列表中的person2)


但我担心有1000个用户,如果这样做,我的表中将有1000000行。如果必须为数据库中的每个用户保存所有这些成对分数,这会很残酷吗?或者,如果我在周日晚上凌晨1点运行它,或者只缓存这些响应一次,并使用比较数月,这是否无关紧要?有没有比两两配对更好的方法?我是否应该使用其他数据结构来捕获人员及其兼容性分数?非常感谢您的指导

有趣的问题。在机器学习的当前范例中,您使用稀疏矩阵,这意味着您不必执行每个匹配评估。稀疏性可能来自两种选择:

  • 创建数据的批处理脱机分析,以执行某些群集(奇特的解决方案)
  • 通过一些关键属性筛选个人:a)性别/性偏好,b)地理位置,c)约会状态等(简单解决方案)
  • 过滤之后,您可以执行一个函数来估计新用户的适当匹配项。根据用户选定的选项,将选定的匹配项添加到数据库中,以备将来查询。然而,如果你认真对待这个问题,我建议你试试Spark。这不是SQL数据库的问题,而是大数据引擎的问题