【问题标题】:freebase api for sorting by city relevance用于按城市相关性排序的 freebase api
【发布时间】:2012-04-16 21:33:36
【问题描述】:

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

这很好用,除了我还想调整它以按大小或任何重要顺序对其进行排序以避免 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,但运气不佳,有什么想法吗?

【问题讨论】:

    标签: google-api freebase relevance mql


    【解决方案1】:

    您可以分两个阶段执行此操作。首先,您可以像上面那样使用 MQL 通过 ISO 代码查找国家/地区:

    {
      "/location/country/iso3166_1_alpha2": "US",
      "mid":           null,
      "name":          null
    }​
    

    然后,一旦您知道该国家/地区的 MID,您就可以使用 Search API 获取该国家/地区 100 个最相关城市的排名列表like this

    filter: (all type:/location/citytown part_of:/m/09c7w0)
    

    这是使用 Search API 过滤器语法和特殊的 Metaschema 谓词来查找包含在美国 (/m/09c7w0) 内的实体。这特别有用,因为 Search API 理解 /location/location/contains 是一个传递属性,因此它会查看美国包含的任何实体,即使该包含在 Freebase 图中的深度超过一层。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多