2

特定の国のすべての都市を返したいクエリがあります。

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ましたが、運が悪かったので、何かアイデアはありますか?

4

1 に答える 1

1

これは2段階で行うことができます。まず、上記のようにMQLを使用してISOコードで国を検索できます。

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

次に、その国のMIDがわかったら、Search APIを使用して、このようなその国で最も関連性の高い100の都市のランク付けされたリストを取得できます。

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

これは、Search APIフィルター構文と特別なMetaschema述語を使用して、米国(/ m / 09c7w0)内に含まれるエンティティを検索しています。Search APIは、/ location / location / containsが推移的なプロパティであることを理解しているため、これは特に便利です。そのため、Freebaseグラフの深さが1レベルを超えている場合でも、米国に含まれているエンティティを検索します。

于 2012-04-03T20:24:04.280 に答える