1

freebase を使用して、都市に関連する国の ISO コードを返そうとしています。

機能するこの MQL がありますが、特定の都市では機能しません。おそらく、同じことを行うためのより簡単な方法がありますか?

{
  "id": "/en/amarillo",
  "/location/location/containedby": [
    "/location/country/iso3166_1_alpha2": null,
    "type": "/location/country"
  ]

}​

小さな都市ではうまくいかないことがあります。Freebase の提案 (都市を収集するために使用する) を使用して、同じ要求で ISO コードを返す方法はさらに良いでしょうか?

jQuery ->
    $("#city_name")
        .suggest(type: "/location/citytown")
        .bind "fb-select", (e, data) ->
            $("#city_freebase_id").val data.id
4

1 に答える 1

2

それは基本的に私がそれを行う方法ですが、あなたが発見したように、データは信じられないほど完全に入力されていません。何かを見つける可能性を高めるために行うことができる1つの調整は、たとえば、都市が国に含まれている州に含まれている場合に、追加のレベルを上げることです。また、サブクエリに中括弧のセットがないため、APIでクエリが失敗する可能性があります(クエリエディタはこのようなものをサイレントに修正します)。

追加のレベルを上げて中括弧を修正する改訂されたクエリは、次のようになります。

{
  "id":   "/en/avondale",
  "/location/location/containedby": [{
    "/location/country/iso3166_1_alpha2": null,
    "type":          "/location/country"
  }],
  "l2:/location/location/containedby": [{
    "id":null,
    "/location/location/containedby": [{
      "/location/country/iso3166_1_alpha2": null,
      "type":          "/location/country"
    }]
  }]
}​

検索APIにはmql_outputパラメーターがあり、これを使用して目的の処理を実行できますが、FreebaseSuggestで使用されているかどうかはわかりません。利用可能であることが文書化されていません。コードにも含まれていない場合は、ウィジェットをハックしてこれを追加するのはそれほど難しくありません。

于 2012-03-29T14:05:39.850 に答える