省略搜索结果

时间:2012-05-26 19:01:44

标签: php foursquare

使用foursquare api php

我正在搜索夜生活类别的场地:

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4d4b7105d754a06376d81259", "limit"=>"50");

$venues = $foursquare->GetPublic("venues/search", $params);

按预期工作......有点儿。问题是被分类为酒吧的餐馆正在填补我的回报限制。所以在搜索中我可能只会得到一些实际的夜生活场所。如果我可以省略具有某些类别的场地,那将会非常有帮助。获得50个夜生活场所,但不会被标记为食物。

我已经四处搜索并继续重新阅读搜索端点页面,希望我忽略了省略功能。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题(不同的类别类型)

我们最终做的是使用特定类别执行多次搜索。 categoryId字段接受多个逗号分隔的类别,因此我们有时最多执行3次具有多个categoryIds的搜索。

因此,在要求单一类别的情况下,您的请求看起来像(没有'酒吧',我只选择了几个随机的夜生活类别):

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4bf58dd8d48988d11f941735,4bf58dd8d48988d121941735,...", "limit"=>"50");

然后再做一般夜生活的请求

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4d4b7105d754a06376d81259", "limit"=>"50");

合并结果。

此解决方案需要注意两点:

  1. 您可能(可能)从多次搜索中获得重叠结果,因为场地有时会有多个类别(正如您已经发现的那样),请记住处理多个结果。我们首先扫描了所有结果,并根据foursquare ID保留了唯一的结果,然后开始处理。
  2. 此解决方案无法与foursquare API进行良好扩展 - 进行40次搜索无法正常工作..(但没有其他方法可以获得您需要的内容,所以我仍然在这里编写整个解决方案)