我正在开发一个应用程序,它将拥有多个Facebook用户。
我正在试图找出最好的方式来了解谁(从最多约20个列表中),与该列表中的其他人有大多数联系(朋友)。
所以,让我们说这种情况:
list = [A, B, C, D, E, F...];
其中,A
是B
,C
和D
的朋友。 B
是A
和C
的朋友。
我会知道,A
有3个连接,B
有2个,C
有2个。并使用A
作为发布内容的连接。< / p>
我想在一些解决方案中:
1)对于列表中的每个人,检查所有其他人的朋友连接(使用Graph API)。
2)在数据库中缓存所有用户的所有朋友(可能是Neo4j
或MongoDB
,SQL
...),然后横向搜索,寻找共同的朋友。
问题1:每次都可能需要时间。 问题2:DB会变得非常大。
问题:1和/或2可以吗?这样做还有其他办法吗? (我读过Facebook API,但没有看到这样的东西)。
答案 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