2

ユーザーと各ユーザーの相互の友達の数を取得しようとしています。

これを解決するために、グラフapiとfqlを詳しく調べました。グラフAPIを見てきましたme/mutualfriends/<uid>

ただし、これを多数の友人(> 1k)で行う場合は、個々の友人間の相互の友人を要求するには多すぎます。

次に、FQLとGraph APIの両方を使用して、バッチリクエスト(一度に最大50)でこれを試しました。これでも、1つのクエリですべての友達を取得し、次に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);

fqlの代わりにグラフAPIを使用する方が速いようですが、1つのクエリですべての友達の相互友達を取得する方法はありますか?それとも、これを行うためのより速い方法が実際にありますか?SOのさまざまな部分でmutual_friend_countについて読んだことがありますが、これはまだ機能していません。

4

1 に答える 1

1

ここに示すように、相互の友人_カウントが機能するようになりました。ただし、単一の 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 に答える