如何根据freebase中的位置进行过滤?

时间:2013-04-04 21:48:05

标签: google-api freebase

我一直在尝试根据位置过滤建议但不成功。 我想要显示所有地点,城市,城镇,乡村:印度

我应该对下面的代码进行哪些更改?

<script type="text/javascript">
$("#myinput")
  .suggest({
    "key": "my key",
  filter: '(any type:/location/location )'

  })
 .bind("fb-select", function(e, data) {
   alert(data.name + ", " + data.id + " (" + data['n:type'].name + ")");
});
      </script>

2 个答案:

答案 0 :(得分:1)

使用搜索过滤器执行此操作的方法是使用part_of Metaschema predicate,如下所示:

<script type="text/javascript">
$("#myinput")
  .suggest({
    "key": "my key",
  filter: '(all type:/location/location part_of:/m/03rk0)'

  })
 .bind("fb-select", function(e, data) {
   alert(data.name + ", " + data.id + " (" + data['n:type'].name + ")");
});
</script>

part_of Metaschema谓词是及物性的,这意味着它与part_of印度(/ m / 03rk0)或part_of的{​​{1}}印度part_of位置的Freebase主题相匹配等等。

答案 1 :(得分:1)

Shawn的方法适用于正确设置了包含属性的主题,但我不确定其覆盖范围有多好。我怀疑简单的地理数据(lat / lon)覆盖范围更好。如果你想过滤距离印度质心的距离,你可以这样做:

filter=(all type:/location/location (within radius:500km+lon:82.7948 lat:21.7866))

https://www.googleapis.com/freebase/v1/search?indent=true&filter=%28all+type%3A/location/location+%28within+radius%3A500km+lon%3A82.7948+lat%3A21.7866%29%29&output=%28geocode%29

请注意,这是非常粗略记录的,我不确定这是否意味着它是全新的,文档没有完成或弃用,即将消失。