如何在不使用标记为*的可索引列的情况下使用FQL查询所有事件

sol*_*lar 4 facebook

我有一个问题要解决.
我想查询所有事件,我想找到特定的字符串.

FQL代码如下所示:

SELECT eid,name,location,start_time,end_time FROM event WHERE
strpos(lower(location),'test')> = 0

当我使用这个FQL代码时,它总是出错.
错误消息是"您的语句不可索引.WHERE子句必须包含可索引列.这些列在http://developers.facebook.com/docs/reference/fql链接的表中标有*"

拜托,请给我你的观点〜谢谢:)

ifa*_*our 6

好吧,错误信息很明确:

您的陈述不可索引.WHERE子句必须包含可索引的列.这些列在http://developers.facebook.com/docs/reference/fql链接的表中标有*

所以简单地说你的方法是行不通的.

编辑:
为了进一步解释为什么这是没有可能的:

Facebook处理" 人们与之交互的超过9亿个对象(页面,群组,事件和社区页面)".参考.

所以基本上给你(所有App开发者)搜索所有页面,事件,组等的能力肯定会使系统失效.这就是为什么要仔细选择这些"索引"字段的原因.

例如,如果您想按"位置"搜索事件,那么这些事件应该"以某种方式"与您的应用程序相关.就像你的应用程序创建的那样,你应该将它们的id存储在某个地方,以便这样的东西可以工作:

SELECT eid, name, location, start_time, end_time FROM event WHERE
strpos(lower(location),'test') >=0 AND eid IN (ids_from_your_db)
Run Code Online (Sandbox Code Playgroud)