13

http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Introducing_Indexesで説明されているように、アプリエンジンには「1つのプロパティでのみ不等式フィルターが許可される」という制限があることを認識しています。

ただし、基本的に2つのフィルターを実行する方法はありますか、それとも単に不可能ですか?たとえば、単純にX座標とY座標を持つエンティティの種類があり、X1からX2およびY1からY2の特定の範囲内にあるすべてのエンティティが必要な場合、X1からY2までのすべてのエンティティをクエリする方法はありますか? X2をY値で並べ替えてから、Y値の目的の範囲内の関連するものを簡単に取得しますか?

もしそうなら、誰かがデモンストレーションするためのサンプルコードを持っていますか?

4

3 に答える 3

6

データに適している場合は、X と Y をビンに離散化し、2 つの値のハッシュを生成して、それをモデルに保存できます。次に、検索したい領域と重複するハッシュの正確な検索を行うことができます。次に、地域外の結果を手動で除外します。

これは基本的に、地理モデルが緯度/経度に対して行っていることです。

于 2010-06-11T08:45:19.797 に答える
3

AlfredFullerの最近のGoogleI/ Oの講演によると、彼らは数値プロパティに対する複数の不等式フィルターのサポートに取り組んでいます。

于 2010-06-11T15:05:06.273 に答える
1

何をしようとしているのかによっては、このMultiInequalityMixinが 興味深いものになるかもしれません。最初の不等式を Google のデータベースに渡し、その後の不等式をフィルターとして処理します。免責事項: これは私が 1 年以上前に思いついたアイデアのかなり大雑把な実装であり、実際にはすべてが完成したわけではありません ...

2 つの軸で効率的なインデックス作成が必要な場合は、Saxon Druce が言うように、ある種の geohash などのアルゴリズムが必要です。

于 2011-02-22T23:27:00.700 に答える