我正在尝试使用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
答案 0 :(得分: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使用。它没有记录可用。如果它不在代码中,那么破解小部件来添加它也不会太难。