用于按城市相关性排序的freebase api



我有一个查询,我想返回给定国家的所有城市。

这很好,只是我也想调整一下,按大小或任何重要顺序排序,以避免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图中超过一个级别。

相关内容

  • 没有找到相关文章

最新更新