1

我正在尝试按 2 个标准对那些首先使用我的应用程序并且与我有最多共同朋友的人进行排序。有没有办法按 FQL 中的 2 个字段排序?

我找到了使用mutual_friend_count * is_app_user 作为排序标准的工作,但它仅适用于app_user = 1,并且不为0 的人执行排序。

原始查询是:

SELECT uid, name, is_app_user, mutual_friend_count  
FROM user 
WHERE uid IN(SELECT uid2    FROM friend WHERE uid1 = me()) AND uid != me() ORDER BY (mutual_friend_count * is_app_user) DESC LIMIT 333

在图形 API/FQL 资源管理器中执行。

4

1 回答 1

2

我找到了使用mutual_friend_count * is_app_user 作为排序标准的工作,但它仅适用于app_user = 1,并且不为0 的人执行排序。

当然不是,因为 fe 66 * 0 给出与 15 * 0 相同的排序值。

但假设没有人的共同朋友数大于 99999,您可以按is_app_user * 99999 + mutual_friends_count.

这将为应用程序用户提供 99999 的“基础值”,并获得添加的共同好友数量。对于非应用用户,基值仍为 0,同时获得共同好友的数量。

因此,应用程序用户将比非应用程序用户具有更高的排序值,因此将获得排名第一——同时考虑到添加的mutual_friends_count。非应用用户仍然会按照他们的mutual_friends_count 排名,但仅排在应用用户之后,因为他们的排序值要低得多。

唯一可能有点棘手的是,将 + 号添加到查询中——当通过 URL 将其传递给 Graph API Explorer 时,它必须被 URL 编码为 %2B,但它不会将其显示为事后查询。但是从结果来看,它似乎仍然在使用它来进行查询:

请参阅此处的示例查询。

于 2012-10-08T08:42:41.547 回答