1

我正在尝试使用 freebase 返回与城市相关的国家 ISO 代码。

我有这个 MQL 有效,但它不适用于某些城市,并且可能有更直接的方法来做同样的事情?

{
  "id": "/en/amarillo",
  "/location/location/containedby": [
    "/location/country/iso3166_1_alpha2": null,
    "type": "/location/country"
  ]

}​

它有时不适用于较小的城市。更好的方法是使用 Freebase 建议(我用来收集城市)在同一请求中返回 ISO 代码?

jQuery ->
    $("#city_name")
        .suggest(type: "/location/citytown")
        .bind "fb-select", (e, data) ->
            $("#city_freebase_id").val data.id
4

1 回答 1

2

我基本上就是这样做的,但是,正如您所发现的,数据并没有完全填充。您可以进行的一项调整以提高您找到某些东西的几率是提高一个额外的水平,例如,如果城市被一个国家所包含的州所包含。您的子查询中还缺少一组花括号,这可能会导致您的查询在 API 中失败(查询编辑器会默默地修复这样的内容)。

修改后的查询提升了一个级别并修复了大括号,如下所示:

{
  "id":   "/en/avondale",
  "/location/location/containedby": [{
    "/location/country/iso3166_1_alpha2": null,
    "type":          "/location/country"
  }],
  "l2:/location/location/containedby": [{
    "id":null,
    "/location/location/containedby": [{
      "/location/country/iso3166_1_alpha2": null,
      "type":          "/location/country"
    }]
  }]
}​

搜索 API 有一个 mql_output 参数,可以用来做你想做的事,但我不确定 Freebase Suggest 是否使用它。它没有记录可用。如果它也不在代码中,那么破解小部件以添加它不会太难。

于 2012-03-29T14:05:39.850 回答