FQL-搜索流中的评论数组



当我从流表中提取搜索结果时,返回的组件之一是注释数组。我想知道是否有任何方法可以根据评论数组中的评论文本进行搜索?

这是我的疑问。它以目前的形式运行良好:

SELECT post_id,归因,消息,描述,评论。评论列表。text,点赞,位置,永久链接,消息标签,消息,描述标签,类型FROM流中的WHERE filter_key(SELECT filter_key FROM stream_filter WHERE uid=me())以及((strpos(下(消息),"大学橄榄球")>=0)OR(strpos(lower(description),"大学橄榄球")>=0)OR(strpos(下(归因),"大学橄榄球")>=0))order by created_time desc

其中一个返回行的comment_list.text结果如下所示:

"评论":{"注释列表":[{"text":"我喜欢大学橄榄球"},{"text":"阿拉巴马州和路易斯安那州立大学统治大学橄榄球"}]}

我的问题是:我是否也可以像搜索上面的消息描述归因一样,在评论.评论列表.文本中进行搜索?当我尝试添加以下内容时:

(strpos(lower(comments.comment_list.text),"大学橄榄球")>=0)

我得到了一个空的数据集(有趣的是,我没有得到任何错误,只是得到了空的结果)。我明白为什么了,因为我需要能够以某种方式遍历评论数组,然后检索它们的文本,并对评论的文本进行比较。我想在Facebook端用FQL来做这件事,并希望避免检索所有结果,然后在我端迭代它们。关于如何做到这一点,有什么想法或建议吗?

提前感谢您的帮助!

stream表中的comments字段仅检索注释的子集。我认为上限是5。而且搜索FQL返回的数组似乎很容易。事实并非如此。

最好的做法是将其转换为多查询。对于结果,您只需要查看#combined数据。

{'all_posts':
'SELECT post_id FROM stream WHERE filter_key in 
(SELECT filter_key FROM stream_filter WHERE uid=me())',
'commented':
'SELECT post_id FROM comment WHERE post_id IN (SELECT post_id FROM #all_posts)
AND (strpos(lower(text), 'college football') >= 0',
'combined':
'SELECT post_id, attribution, message, description, comments.comment_list.text, likes,
place, permalink, message_tags, message,  description_tags, type
FROM stream WHERE post_id IN (SELECT post_id FROM #all_posts) AND 
(
(strpos(lower(message), 'college football') >= 0) OR 
(strpos(lower(description), 'college football') >= 0) OR 
(strpos(lower(attribution), 'college football') >= 0)
)
OR post_id IN (SELECT post_id FROM #commented)
order by created_time desc'
}

最新更新