配对后端实施

时间:2015-11-12 17:29:42

标签: node.js cron server backend matchmaking

我正在编写一个软件,它具有将2个用户匹配在一起的功能。这些用户如何匹配并不重要,但我无法理解如何实现后端功能。

例如,一种方法是将用户保存在一个表中并使用搜索字段。然后我可以在服务器上安装一个Cron作业,每隔5秒左右检查一次这个特定的列。如果它找到两个或更多用户搜索它们将它们匹配在一起。

另一个例子可能是当用户请求匹配时,服务器会检查是否有其他用户请求匹配。如果是这样,它将它们匹配在一起。否则,它会在此用户上设置一个标志,然后在下次此功能为另一个用户运行时获取。

这些方法中的任何一种都是正确的吗?有没有更好的方法呢?我不是在寻找具体的代码(尽管伪代码会有所帮助),只是一种通用的方法。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我从未完成过这项工作,所以我告诉你的是根据我对算法开发和机器学习背景的猜测和想法,它非常笼统。

我认为您首先要做的是收集有关每个用户的信息并为他们创建属性向量(数字/序数)。然后你必须根据领域知识开发相似性得分算法。该算法最有可能接收两个向量并返回最大值和最小值之间的分数。您可以每隔x个单位执行KNN(k最近邻居),并找到每个特定用户最近的N个最相似的用户。有许多近似算法可以及时完成这项任务。

您还可以使用kd-tree将所有信息保存在一个数据结构中(并以更节省时间的方式查找每个用户的N个最近邻居。您不想做什么?是为所有其他用户查找用户的匹配。通常将搜索范围限制在特定的年龄范围或地理范围。

(注意:请确保您不能并且不想将所有数据保存在一个数据结构中,因为您希望将其水平和垂直拆分以将其保留在磁盘上并限制搜索)

正如我所说,这只是对这种方法的一般思考。我希望你能得到更具体的答案。