Freebase API - 按相关性列出城市的旅游景点

时间:2014-03-05 20:41:22

标签: api search location coordinates freebase

我正在尝试使用Freebase列出相关城市的旅游景点。

使用Topic API,使用MID检索某个城市的结果很简单(例如伦敦的“/ m / 04jpl”)

https:// www.googleapis.com/freebase/v1/topic/m/04jpl /?& filter = / travel / travel_destination / tourist_attractions

然而,这给出了有限的10个结果。响应以"count": 87.0"结尾。我怎么得到所有87?可以在伦敦的Freebase页面上单击“87 values total”链接。实际上,我想在这里做同样的事情。

我意识到我可以使用MQL,但我希望结果按相关性排序,而不是按时间戳排名。使用Search API,可以按freebase,实体或架构进行排名,所以我宁愿使用它。

首先,我查看了Search API的搜索输出架构。然而,即使输出“全部”也没有产生旅游胜地的结果。使用metaschema和Search API DID工作。我用“part_of”来选择伦敦。但是,它仅适用于某些位置:

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/04jpl)&indent=true

我真正想要的是让它适用于“Loughborough”(MID / m / 01z21p)等相对未知的位置。如您所见,用/ m / 04jpl代替/ m / 01z21p不会产生任何结果:

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction%20part_of:/m/01z21p)&indent=true

看着“拉夫堡”,我们看到像“Loughborough Town Hall”这样的旅游景点有“拉夫堡”的“/ travel / tourist_attraction / near_travel_destination”。我该如何编写这个过滤器?

我想要以下内容(实际上有效):

https:// www.googleapis.com/freebase/v1/search?limit=50&filter=(all%20type:/travel/tourist_attraction)&filter=(/travel/tourist_attraction/near_travel_destination: /米/ 01z21p)及缩进=真

谢谢!

注意:要在浏览器中输入链接,您需要删除https://和www之间的空格。我本来会这样做的,但我还没有必要的权限发布超过2个链接。

1 个答案:

答案 0 :(得分:0)

我使用2个Freebase API调用解决了这个问题。

1)一个MQL查询,它获取特定MID的所有旅游景点的列表。这些结果没有以任何有用的方式排名。我也会返回结果编号,以便稍后处理

https://www.googleapis.com/freebase/v1/mqlread?query={"mid":"/m/04jpl","/travel/travel_destination/tourist_attractions":[{"mid":null}],"resultnumber:/travel/travel_destination/tourist_attractions":[{"return":"count"}]}

然后使用返回的MID列表创建新查询(使用for循环)。您必须输入从上述查询返回的所有MID,以便它们可以全部排在一起。

2)https://www.googleapis.com/freebase/v1/search?limit=10&filter=(any%20mid:/m/0gsxw%20mid:/m/01d_0p%20mid:/m/07gyc)&scoring=entity

最好选择仅返回MID的返回格式,以确保加载时间不广泛。

然后你有一个排名的MID列表!你需要一个最终的查询来返回你想要的任何细节。

我希望这证明有用。