FQL查询限制

时间:2014-03-17 04:13:12

标签: facebook facebook-graph-api facebook-fql

我在Graph Explorer上尝试这个简单的查询

SELECT eid FROM event_member 
           WHERE (uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 
                  OR uid = me())

并返回“错误:请求失败。”

然后,我开始阅读这里和一些论坛,它与限制有关,所以我尝试将我的朋友列表限制为20,并且它有效。

这是限制?和哪里(查询,或给出的结果)?据我所知,文档中没有任何内容。

修改

如果我按mutual_friend_count命令我的所有朋友,然后限制200,该怎么办?我还添加了start_time>now()。这不是找到最亲密朋友的最佳方式,但它不需要访问您的信息流的权限(检查朋友的喜欢和评论)。

SELECT eid FROM event_member 
WHERE (uid = me() 
OR uid IN (SELECT uid FROM user 
           WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()
                         ORDER BY mutual_friend_count DESC) 
           LIMIT 200)
       )
AND start_time > now()
  1. 在另一个查询中是否有太多查询?他们实际上是三个。
  2. 这不是很有效 在某些情况下。例如,在我的情况下,顶级共同的朋友生活 在我的家乡,我对我实际城市的活动感兴趣。
  3. 想象一下,我限制每个用户只检索5个事件。只有当用户有他/她正在参加/不确定的即将发生的事件的列表时,它应该不会那么难。

    例如,执行graph.facebook.com/user-id/events“似乎”就是这样工作。

    但是,我想从event_member表中读取它并不是那么容易,因为如果我的任何朋友在那里,它将遍历大型事件数据库并逐个检查。我错了吗?

1 个答案:

答案 0 :(得分:0)

据我所知(并且你也写过)这些限制没有记录。我建议您使用

 LIMIT start, end

在您的子查询中如下

SELECT eid FROM event_member 
           WHERE (uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 0,24) 
                  OR uid = me())

我使用的最佳做法是提前获取号码或朋友,然后创建"细分查询",即您有187个朋友,所需的限制为每个查询25个,然后你需要8"细分查询"从朋友那里获取整个活动列表。这也可以通过批量请求来完成(但是朋友需要先在单独的查询中计算)。

这些电话在Facebook方面的一般限制是处理时间或结果的长度我猜...