我试图让用户和他或她的朋友之间的共同朋友计数。
我已经广泛研究了图api和fql来尝试解决这个问题。我查看了图表api me/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 url:
/me/mutualfriends/FRIEND_ID
我正在使用批处理,如:
$facebook->api('/?batch='.json_encode($batch), 'POST');
批处理中的每个查询都是这样的数组:
$cur = array('method'=>'GET', 'relative_url'=> $relative_url);
使用图形api而不是fql似乎更快,但有没有办法让一个查询中的所有朋友的共同朋友?或者实际上有更快的方法吗?我在SO的不同部分读过有关mutual_friend_count的内容,但还没有让它工作。
答案 0 :(得分:1)
我刚刚让mutual_friend_count工作,如图所示。但是,如果您可以构造单个SQL查询来获取此数据,我仍然很好奇。
$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,
));