【问题标题】:Facebook Graph API search places by categoryFacebook Graph API 按类别搜索地点
【发布时间】:2012-06-21 22:49:33
【问题描述】:

我目前正在开发一个 Android 应用程序,它使用 Facebook 图形 API 根据用户的位置获取页面/地点。我还想按类别过滤结果,例如餐馆。 现在我只是像这样搜索“餐厅”这个名字: https://graph.facebook.com/search?q=restaurant&type=place&center=37.76,-122.427&distance=1000

问题在于它不会找到没有名称“restaurant”的页面/地点,并且它还会返回与餐馆没有任何关系的地点。我也有语言问题,在非英语国家我的搜索将完全失败。

我正在考虑的一个可能的解决方案是获取一个范围内的所有地点并在我的应用程序中解析它们以获取类别或名称。显然这给我的应用带来了很多开销。

我想知道是否有更好的解决方案,例如使用 FQL 来获得过滤结果?

【问题讨论】:

    标签: android facebook facebook-graph-api


    【解决方案1】:

    应该有,但我不知道是怎么回事。

    此 FQL 查询将为您提供有关已知位置附近所有地点的信息:

    SELECT name, page_id, categories, description, general_info 
       FROM page WHERE page_id IN 
         (SELECT page_id FROM place WHERE 
            distance(latitude, longitude, "37.76", "-122.427") < 1000
          )
    

    categories 字段是一个包含值 idname 的数组。查看这些结果,有一系列类别名称,如“餐厅”:“意大利餐厅”、“酒吧/餐厅”等。

    我找不到一种方法来添加 WHERE categories 子句来返回数据。

    【讨论】:

    • 谢谢,我可以尝试一下,但我认为这给了我使用基本图形 API 请求相同的结果。我相信您不能使用“WHERE 类别”的原因是因为它不是可索引的列,如您所见here
    • 不正确。 FQL 中的第一个 WHERE 子句必须是可索引的。之后,您可以在不可索引的列上添加WHERE 条件以限制您的结果。 FQL 与 Graph API 查询的最大区别在于添加了类别字段,可让您明确识别“Hog & Rocks”是一家餐厅。
    • 好点。但是使用 Graph API 我还可以获取页面列表并检查每个页面的类别字段。所以不可能像在常规 SQL 中那样在第二个子句中添加 - AND WHERE category = 'restaurant' 吗?
    • 这两个调用返回的内容不同。查看 ID 21653874551894。图形 API 显示它是“本地企业”,而 FQL 显示它是“冰淇淋店”和“餐厅”。
    • 在 FQL 中,类别是一个数组。我已经尝试了categorycategory.namecategory.id=INstrpos() 的所有变体,我可以在WHERE 查询中想到这些变体,但都无法返回数据。我已经浏览了文档和 SO,但没有看到任何指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多