facebook-fql - FQL 中 CONTAINS() 的文档?

标签 facebook-fql contains

最近有several questions posted在 Facebook.SO 上,在 WHERE 子句中使用 CONTAINS()。它的工作原理似乎类似于 Graph API 搜索功能,并且充当索引字段。对于 FQL 开发人员来说,这一切都是伟大的事情。

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

但是,官方唯一提及 CONTAINS 函数出现在 unified_thread 中。文档。顺便提到它是一种搜索消息中包含的文本的方法。也出现在这个fbrell code sample .

但是Contains似乎并不是一个简单的搜索。例如,这个查询:

SELECT name
FROM   user
WHERE  CONTAINS("Joe Biden")

返回“乔·拜登”以及“约瑟夫·拜登”和“拜登·乔”。但它也返回了“Joe Scardino”、“Lindsay Noyan”和“Mehmad Moha”等。这些人与美国副总统是什么关系?他们不是我的 friend ,所以我永远不会知道。

似乎还可以传递 CONTAINS 字段进行搜索,但是将我的第一个查询的结尾更改为 `CONTAINS("Facebook", name) 会返回 OAuth 错误:

 (#615) 'name' is not a valid search field for the profile table.

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

那么这个神秘的功能是什么呢?它是如何工作的?它能让我们做迄今为止在 FQL 中不可能完成的事情,比如遍历数组和过滤存储在字符串中的数据吗?

这里的答案很好,但官方开发人员文档网站上的 FQL 函数和方法引用页面上的描述会更好。

最佳答案

我认为 a 在这里没有任何好的答案,但我可以为返回不相关名称的问题提供一个解决方法 - 我怀疑这是因为人们公开发布了有关乔·拜登的帖子,喜欢他,等等。如果您执行以下操作:

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

您将得到一个仅包含正确名称的结果集 - 尽管它消除了返回约瑟夫·拜登等的优势。

我个人的痛点是 CONTAINS() 似乎适用于配置文件表上的部分字符串(例如“Joe Bide”),但不适用于用户表。非常令人沮丧。

关于facebook-fql - FQL 中 CONTAINS() 的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630401/

相关文章:

c# - 查看字典字符串值是否包含某种模式并且同时不包含 C# 中的其他模式的最佳方法是什么?

c# - 如果 Contains 返回 true,则提取列表中的项目

facebook - 查询所有公开的 Facebook 帖子

android - 获取当前用户喜欢帖子的状态

ios - Facebook:FQL 获取所有签到 me() 已标记在

java - 在 Java 中对字符串使用包含

java - 包含在 Java 中无法正常工作的方法

Java:检查字符串是否包含多个字符

facebook - 如何通过 Facebook API 获取好友点赞

php - 执行 FQL 时出现 SSL 证书问题