FQL中CONTAINS()的文档?

时间:2012-09-27 21:38:20

标签: facebook-fql contains

最近在Facebook.SO上使用CONTAINS()子句中的WHERE several questions posted。它似乎像Graph API搜索功能一样工作,AND作为索引字段。 FQL开发人员的所有精彩内容。

SELECT name,
       username,
       type
FROM   profile
WHERE  CONTAINS("Facebook")

但是,CONTAINS功能中唯一官方提及的Contains功能会出现在unified_thread文档中。它在传递中被提及,作为搜索消息中包含的文本的一种方式。它也出现在fbrell code sample

但是SELECT name FROM user WHERE CONTAINS("Joe Biden") 似乎不是一个简单的搜索。例如,此查询:

CONTAINS

返回“Joe Biden”以及“Joseph Biden”和“Biden Joe”。但它也回归“Joe Scardino”,“Lindsay Noyan”和“Mehmad Moha”等。这些人与美国副总统有什么关系?他们不是我的朋友,所以我永远不会知道。

似乎还能够将 (#615) 'name' is not a valid search field for the profile table. 字段传递给搜索,但是将第一个查询的结尾更改为“CONTAINS(”Facebook“,name)会返回OAuth错误:

{{1}}

在我不那么严格的测试中,我还没有找到一个不会返回此错误的字段/表组合。

那么这个神秘功能是什么?它是如何工作的?是否允许我们在FQL中做到迄今为止无法做到的事情,如遍历数组和过滤存储在字符串中的数据?

这里的答案很棒,但有关FQL功能的说明&官方开发者文档站点上的方法参考页面会更好。

1 个答案:

答案 0 :(得分:2)

我不认为这里有任何重要的答案,但我可以针对返回无关名称的问题给出一个解决方法 - 我怀疑这是因为人们公开发布关于Joe Biden的帖子,喜欢他,或者等等。如果您执行以下操作:

SELECT name
FROM   user
WHERE  CONTAINS("Joe Biden")
AND    strpos(lower(name),lower("Joe Biden")) >=0

你将获得一个只包含正确名称的结果集 - 虽然它消除了返回Joseph Biden等的优势等。

我个人的痛苦之处在于,CONTAINS()似乎与配置文件表上的部分字符串(例如“Joe Bide”)一起使用,但不在用户表上。非常令人沮丧。