我如何使用 FQL 查询所有事件而不使用标记为 * 的可索引列
Posted
技术标签:
【中文标题】我如何使用 FQL 查询所有事件而不使用标记为 * 的可索引列【英文标题】:How could I use FQL to query all the events without using indexable column which is marked * 【发布时间】:2011-04-28 16:33:46 【问题描述】:我有一个问题要解决。 我想查询所有的事件,我想找到具体的字符串。
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 链接的表中标有 *”
请给我你的观点~谢谢:)
【问题讨论】:
【参考方案1】:嗯,错误信息很清楚:
您的语句不可索引。这 WHERE 子句必须包含一个 可索引的列。这样的列是 在链接的表格中标有 * 从 http://developers.facebook.com/docs/reference/fql
所以你的方法根本行不通。
编辑: 为了进一步解释为什么这是不可能:
Facebook 处理“超过 9 亿个对象,人们与之互动(页面、群组、活动和社区页面)”。 reference。
所以基本上让您(所有应用程序开发人员)能够搜索所有页面、事件、组...等肯定会导致系统崩溃。这就是为什么要仔细选择这些“可索引”字段的原因。
例如,如果您想按“位置”搜索事件,那么这些事件应该“以某种方式”与您的应用程序相关。例如,就像由您的应用程序创建的一样,您应该将它们的 id 存储在某个地方,以便这样的事情可以工作:
SELECT eid, name, location, start_time, end_time FROM event WHERE
strpos(lower(location),'test') >=0 AND eid IN (ids_from_your_db)
【讨论】:
是的~我知道,如果我想找到一些包含特定字符串并且索引uid不稳定的事件。我想找到解决这个问题的方法。以上是关于我如何使用 FQL 查询所有事件而不使用标记为 * 的可索引列的主要内容,如果未能解决你的问题,请参考以下文章