2

我正在尝试获取用户与其每个朋友之间的共同朋友的数量。

我已经广泛研究了图形 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 的不同部分阅读了有关相互朋友计数的信息,但还没有让它发挥作用。

4

1 回答 1

1

我刚刚让mutual_friend_count 工作,如此处所示。但是,我仍然很好奇您是否可以构建单个 FQL 查询来获取此数据。

$fql = "SELECT name,mutual_friend_count FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1=me())";

$response = $facebook->api(array(
    'method' => 'fql.query',
    'query' =>$fql,
));     

来自拥有最多共同好友的好友

于 2012-09-09T20:28:49.870 回答