谁有更多相关的朋友在FB

时间:2014-07-29 00:51:39

标签: algorithm mongodb facebook-graph-api graph neo4j

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

我正在试图找出最好的方式来了解谁(从最多约20个列表中),与该列表中的其他人有大多数联系(朋友)。

所以,让我们说这种情况:

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

其中,ABCD的朋友。 BAC的朋友。

我会知道,A有3个连接,B有2个,C有2个。并使用A作为发布内容的连接。< / p>

我想在一些解决方案中:

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

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

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

问题:1和/或2可以吗?这样做还有其他办法吗? (我读过Facebook API,但没有看到这样的东西)。

1 个答案:

答案 0 :(得分:3)

你可以按照你的说法使用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