我正在尝试获取用户与其每个朋友之间的共同朋友的数量。
我已经广泛研究了图形 api 和 fql 来尝试解决这个问题。我看过图apime/mutualfriends/<uid>
但是,如果对大量朋友(>1k)执行此操作,那么在每个朋友之间请求共同朋友就太过分了。
然后,我使用 FQL 和 Graph API 对批处理请求(一次最多 50 个)进行了尝试。这仍然会导致一个查询来获取所有朋友,然后 N 查询每个朋友的共同朋友。即使一次批处理 50 个,这也需要相当长的时间。
这是主要的 FQL 查询:
select uid1 from friend where uid2 = FRIEND_ID and uid1 in (select uid2 from friend where uid1 = me())';
这是图形 api 网址:
/me/mutualfriends/FRIEND_ID
我正在使用批处理,例如:
$facebook->api('/?batch='.json_encode($batch), 'POST');
批处理中的每个查询都是一个数组,例如:
$cur = array('method'=>'GET', 'relative_url'=> $relative_url);
使用图形 api 而不是 fql 似乎更快,但是有没有办法在一个查询中为所有朋友获取共同的朋友?或者实际上有更快的方法来做到这一点?我已经在 SO 的不同部分阅读了有关相互朋友计数的信息,但还没有让它发挥作用。