Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 在FQL中按姓名搜索人员_Facebook_Facebook Fql - Fatal编程技术网

Facebook 在FQL中按姓名搜索人员

Facebook 在FQL中按姓名搜索人员,facebook,facebook-fql,Facebook,Facebook Fql,我正试图开发一个使用Facebook API的人名搜索功能 我正在尝试此FQL查询: SELECT uid, username, name, pic_square FROM user WHERE strpos(name, 'Alfredo Artiles') >= 0 但是我得到一个“您的语句不可索引。WHERE子句必须包含可索引列。错误 我还尝试添加一个“and uid>0”条件,但这也不起作用 有什么想法吗?稍后编辑 好的,很抱歉关于strpos的错误,上次我检查fql文档时,我不记

我正试图开发一个使用Facebook API的人名搜索功能

我正在尝试此FQL查询:

SELECT uid, username, name, pic_square FROM user WHERE strpos(name, 'Alfredo Artiles') >= 0
但是我得到一个“您的语句不可索引。WHERE子句必须包含可索引列。错误

我还尝试添加一个“and uid>0”条件,但这也不起作用


有什么想法吗?

稍后编辑

好的,很抱歉关于strpos的错误,上次我检查fql文档时,我不记得它的存在。它的问题是,它只能在某些情况下使用。您需要在where子句中有一个primar indexable列和一个带有strpos的第二个条件(至少我是这样成功地使用它的)。例如:

SELECT actor_id, message FROM stream WHERE source_id = me() AND strpos(message, 'stuff') > 0 limit 50
我希望这能澄清一点关于这个函数的混淆

SELECT uid, username, name, pic_square FROM user WHERE contains('Alfredo Artiles')
我不知道它为什么会起作用,因为它违反了“至少在何处有一个可转位的字段”,但它确实做到了


编辑:这是我读到它的地方:

U需要在where子句中指定uid,以便在facebook用户表中获取详细信息。我们无法获取所有用户的详细信息。此处获取当前登录用户的详细信息

"SELECT name FROM user WHERE uid IN(SELECT uid2 FROM 
friend WHERE uid1 = me()) AND strpos(name,'Alfredo Artiles') >=0"
是的,你可以

尝试在配置文件表而不是用户表中搜索。在profile表中,name字段是可索引的,因此您的语句只需稍作更改:

SELECT id, username, name, pic_square FROM profile WHERE contains('alfredo artiles') and type='user'
Contains不区分大小写,而STRPO不区分大小写。您仍然可以使用lower和strpo,但也会遇到特殊字符的问题。这就是解决方案

您可以在以下位置找到配置文件表的所有字段:


希望有帮助

FQL有now()、strlen()、substr()和strpos()检查这里您的查询只返回与strpos错误完全匹配的结果,请重新检查我的答案以查看我编辑的内容全文搜索?像mysql全文版?不,这是不可能的。对于不区分大小写的搜索,请使用
strpos(小写(名称),“input”)>=0
,并确保输入的大小写较低。您是如何访问共享的链接的?您还知道“contains”函数在这里做什么吗?哪些字段是搜索?很抱歉,我已经很久没有做这个项目了,我不记得了。也许我只是在谷歌上搜索过