2

次のように、名前にパターンが含まれる Facebook ユーザー (私の友人や特定のユーザーの友人だけでなく、任意のユーザー) を探します。

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

これは、名前に「pete」が含まれる (つまり、「peter」も含む) 人の配列を返します。数がかなり多いので、結果はもちろん切り捨てられます。このセット (サーバー側の切り捨ての前) で、私と共通の友達が最も多い (または任意のユーザー ID を持つ) 人を取得したいと思います。ただし、発行

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

と空のセットを与えます(そしてエラーはありません)。サーバーは、パフォーマンス上の理由 (またはドキュメントで見逃した明示的な制限) のために、通常の SQL で発生するように、後者の選択を適用する前に切り捨てられると思います。

ユーザー ID の友達のすべての友達を取得してから、名前を選択するという 2 回目の試行を行いました。ただし、友達の友達を取得することは許可されていません (一部の友達は友達のリストを非表示にしており、これによりクエリが壊れるため、技術的に困難です)。

目標を達成する方法は他にありません...何かありますか? (つまり、ユーザーIDを指定して、共通の友達の数が最も多いユーザーを検索します)。

4

2 に答える 2

0

FQLソリューションがないため、最善の策は、もちろんFacebookのベストプラクティスとポリシーに従って独自のデータベースを開始することです。そうすれば、データを構造化できます。FacebookのRealtimeupdatesAPI(https://developers.facebook.com/docs/reference/api/realtime/)を設定して、新しい友情が生まれたときにキャプチャすることで、データを最新の状態に保つことができます。

于 2012-05-14T22:45:34.330 に答える
0

「mutual_friend_count descによる順序」で試してみたところ、うまくいきました。したがって、クエリは次のようにする必要があります。

SELECT first_name,uid FROM user WHERE contains('pete') 相互の友人数による順序 desc

于 2012-06-01T17:59:31.430 に答える