2012-09-09 112 views
2

我想獲得用戶和他或她的每個朋友之間的共同朋友的數量。FQL和圖形API:找到所有Facebook朋友之間的共同朋友

我已經廣泛地研究了圖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網址:

/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,但還沒有得到這個工作。

回答

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, 
));  

Friend with the highest number of mutual friends