我有一个查询,我想返回给定国家的所有城市。
这很好,只是我也想调整一下,按大小或任何重要顺序排序,以避免100的限制。我希望前100个城市首先列出一个人最有可能选择的城市。(人口,还是?)
[{
"/location/country/iso3166_1_alpha2": "US",
"/location/location/contains":[
"id" : null,
"name" : null,
"/location/statistical_region/population" : { "number" : null, "date" : null }
"type" : "/location/citytown"
]
}]
这是有效的,但非常慢,因为它必须计算所有包含的元素:
[{
"/location/country/iso3166_1_alpha2": "US",
"/location/location/contains":[
"id" : null,
"name" : null,
"type" : "/location/citytown",
"/location/location/contains":{"return": "count"}
"sort": "-/location/location/contains.count"
]
}]
我试着加入/location/statistical_region/population
,但运气不好,有什么想法吗?
您可以分两个阶段完成。首先,你可以像上面那样使用MQL通过ISO代码查找国家:
{
"/location/country/iso3166_1_alpha2": "US",
"mid": null,
"name": null
}
然后,一旦你知道了该国的MID,你就可以使用搜索API来获得该国100个最相关城市的排名列表。
filter: (all type:/location/citytown part_of:/m/09c7w0)
这是使用搜索API过滤器语法和特殊的Metaschema谓词来查找包含在美国境内的实体(/m/09c7w0)。这一点特别有用,因为搜索API了解/location/location/contents是一个传递属性,因此它将查看美国包含的任何实体,即使该包含在Freebase图中超过一个级别。