我正在开发一个应用程序,它将有多个 Facebook 用户。
我正在尝试找出了解谁(从最多约 20 个列表中)与该列表中的其他人有最多联系( friend )的最佳方法。
那么,假设这种情况:
list = [A, B, C, D, E, F...];
其中,A
是B
、C
和D
的 friend 。 B
是A
和C
的 friend 。
然后我会知道,A
有 3 个连接,B
有 2 个,C
有 2 个。然后使用 A
作为发布内容的那个。
我想到了一些解决方案:
1) 对于列表中的每个人,检查所有其他人的好友连接(使用 Graph API)。
2) 在数据库中缓存所有用户的所有好友(可能是 Neo4j
或 MongoDB
、SQL
...),然后横向搜索,寻找共同的 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/