algorithm - 谁在FB上有更多的相关 friend

标签 algorithm mongodb facebook-graph-api graph neo4j

我正在开发一个应用程序,它将有多个 Facebook 用户。

我正在尝试找出了解谁(从最多约 20 个列表中)与该列表中的其他人有最多联系( friend )的最佳方法。

那么,假设这种情况:

list = [A, B, C, D, E, F...];

其中,ABCD 的 friend 。 BAC 的 friend 。

然后我会知道,A 有 3 个连接,B 有 2 个,C 有 2 个。然后使用 A 作为发布内容的那个。

我想到了一些解决方案:

1) 对于列表中的每个人,检查所有其他人的好友连接(使用 Graph API)。

2) 在数据库中缓存所有用户的所有好友(可能是 Neo4jMongoDBSQL...),然后横向搜索,寻找共同的 friend 。

问题一:每次都可能要花时间。 问题 2:DB 会变得非常大。

问题:1 和/或 2 可以吗?还有其他方法吗? (我阅读了 Facebook API,但没有看到类似的内容)。

最佳答案

您可以像您所说的那样使用 Neo4j。在 neo4j 中保存人员,包括他们的关系(友谊),然后使用类似于此的查询:

MATCH (a:Person)-[f:FRIENDS]-(b:Person)
WHERE Id(a) IN [1, 2, 3] AND Id(b) IN [1, 2, 3]
RETURN a.name AS name, count(f) AS numOfFriends
ORDER BY numOfFriends DESC

关于algorithm - 谁在FB上有更多的相关 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006643/

相关文章:

python - 谁能教我如何进一步优化这个 'print up to the nth prime number' 脚本?

algorithm - EM算法的贝叶斯信息准则计算

C代码的Python翻译不起作用

javascript - 使用 Mongoose findOne 的函数返回未定义?

javascript - POST 返回值到 MongoDB onsubmit

python - 使用 python 请求模块的 Facebook 图形 GET 请求-证书验证失败

c++ - 在排序数组中找到a [i] = i的最有效方法是什么?

node.js - 将产品插入子模式需要很长时间?

facebook-graph-api - 使用 F# 从 Facebook 图形 API 检索数据

facebook - 用于后台独立应用程序的 Instagram 图形 API 的访问 token