2012-05-14 164 views
2

我尋找Facebook用戶(任何用戶,不僅僅是我的朋友或特定用戶的朋友),其名稱中的模式如下:FQL,搜索非朋友的朋友並按共同朋友排序

SELECT first_name,uid FROM user WHERE contains('pete') 

這將返回名稱中包含「pete」(即「peter」)的人數組。這個數字相當高,所以結果當然會被截斷。我想在這個集合中(在服務器端截斷之前)與我擁有最多的共同朋友(或任意用戶標識)。然而,發行

SELECT first_name,uid FROM user WHERE contains('pete') AND mutual_friend_count > 1 

給和空集(和沒有錯誤)。我認爲在應用後面的選擇之前,服務器會截斷,因爲在正常情況下會出現SQL性能問題(或者我在文檔中漏掉了顯式限制)。

我做了第二次嘗試,試圖檢索用戶的朋友的所有朋友,然後選擇名稱。然而,檢索朋友的朋友是不允許的(在技術上很難,因爲有些朋友隱藏了他們的朋友列表,這打破了查詢)。

我看不出有其他辦法來實現我的目標......有沒有? (我的意思是:給定一個用戶名,搜索擁有最多共同朋友的用戶)。

回答

0

因爲沒有FQL解決方案,所以最好的方法是開始您自己的以下Facebook最佳實踐和政策的數據庫。這樣你可以構建你的數據。通過設置Facebook的實時更新API(https://developers.facebook.com/docs/reference/api/realtime/),數據可以保持最新狀態,以捕獲新朋友時的情況。

0

我只是試着用「通過mutual_friend_count desc訂購」,它工作。因此,查詢需要是:

SELECT名字,UID FROM用戶WHERE包含mutual_friend_count遞減( '彼得')爲了

+2

不爲我工作。如果我發出 'SELECT first_name,uid,mutual_friend_count ...' 我也可以看到相互的數量,它總是零或爲零。所以,至少在我的賬戶中,這個集合在排序之前仍然被截斷。 – Narcolessico