Google AppEngine がクエリごとにサポートする不等式フィルタは 1 つだけであることを理解しています。この制限の回避策は何ですか? 同様の効果をもたらすソリューションはありますか?
3 に答える
実際、GAE は同じプロパティにある限り、複数の不等式フィルターをサポートします。
この制限の回避策はデータ固有のものです。たとえば、データの構造やクエリの方法によって異なります。たとえば、@Dan Holevoet が述べたように、地理検索の場合、さまざまな地理ハッシュ アルゴリズムがあります。基本的に、このようなアルゴリズムはすべて、複数のプロパティを 1 つに結合し、同時にプロパティを量子化する (離散値を作成する) ことを伴います。たとえば、ジオハッシュには、等値演算子を介して検索できるようにするために、世界地図を小さな固定サイズの領域に分割する (= 緯度/経度と量子化を組み合わせる) ことが含まれます。
クエリごとに 1 つの不等式フィルターを使用するための回避策があるかどうかは、クエリ対象のデータセットの種類によって異なります。
たとえば、緯度と経度の住所を使用して位置データを照会する場合、通常は 2 つのプロパティ (緯度と経度) の値の範囲を照会する必要があります。ただし、ジオハッシュアルゴリズムを使用すると、単一のプロパティのみを使用して同等のクエリを実行できます。
私がこの問題を解決するとき(検索範囲の例 - から)、単一の不等式フィルターでクエリを使用します。並べ替え順 (昇順または降順) に応じて、上限または下限を選択します。その後、クエリフィルターにない下限または上限を使用してプログラムで結果をフィルター処理します。