2012-05-30 14 views
7

Google AppEngineはクエリごとに1つの不等式フィルタしかサポートしないことを理解します。この制限の回避策は何ですか?同様の効果をもたらすソリューションはありますか?AppEngine Datastoreの不等号フィルタ

答えて

1

問合せごとに単一の不等式フィルタを使用するための回避策があるかどうかは、問合せ対象のデータセットのタイプによって異なります。

たとえば、緯度と経度の住所を使用して位置データを照会する場合は、通常、2つのプロパティ(緯度と経度)の値の範囲を照会する必要があります。ただし、geohashアルゴリズムを使用すると、1つのプロパティのみを使用して同等のクエリを実行できます。

3

実際、GAEはon the same propertyである限り、複数の不等式フィルタをサポートしています。

この制限の回避策は、データに固有のものです。それはあなたのデータがどのように構造化され、それをどのようにして照会するかによって異なります。たとえば、ジオ検索の場合、@Dan Holevoetが述べたように、さまざまなジオハッシングアルゴリズムがあります。 基本的に、このようなアルゴリズムは、複数のプロパティを1つにまとめて、同時にプロパティを量子化して(離散値を作成する)必要があります。例えば、ジオハッシュは、等価演算子を介して検索できるように、世界地図を小さい固定サイズのエリア(=緯度/経度と量子化の組み合わせ)に分割することを含む。

0

私がこの問題を解決すると(例:〜から範囲を検索する)、私は単一の不等式フィルタでクエリを使用します。並べ替え順序(昇順または降順)によって、上限または下限を選択します。その後、クエリフィルタになかった上限または下限を使用して結果をプログラム的にフィルタリングします。

+0

それは必要でしたか? Peterが述べたように、複数の不等式フィルタが同じプロパティ上にある限り、サポートされています。 –

+0

同じ日付フィールドに1つ(〜から範囲)の範囲を使用しようとしましたが、それは私にとってはサポートされていませんでした。私はJDOと一緒に使っています – alexey28

関連する問題