は私が見えるエンティティがあるとし、このようなビット:Google App Engineの - 他の性質上、キーワード検索+順序
query = MyEntity.all()\
.filter('keywords >=', unicode(kWord))\
.filter('keywords <', unicode(kWord) + u"\ufffd")\
.order('keywords')
:
class MyEntity(db.Model):
keywords = db.StringListProperty()
sortProp = db.FloatProperty()
私はこれを行うことにより、キーワード検索を行うフィルタを持っています
これはうまくいきます。私が実行している問題は、 'sortProp'を使用して注文しようとすると、それは:
.order('sortProp')
並べ替えの効果はありません。
私の質問をされ一つの重要な注意点が平等の両方を含むクエリです:ドキュメントは、特にこれが不可能であると(Googleドキュメントからの)複数の値を持つプロパティに等式フィルタを使用した場合、そのソート順は無視されると言う - 私はなぜ実現します複数の値を持つプロパティの並べ替え順序は です。これらのクエリでは、並べ替え の順序は無視されます。単一値プロパティの場合、これは単純な の最適化です。すべての結果はプロパティの値が同じであるため、結果を並べ替える必要はありません。 ただし、複数値の プロパティには追加値が含まれている場合があります。ソート順は であるため、クエリ結果はソート順が適用された場合とは異なる の順番で返されます。 (ソートドロップ高価になる を注文すると、余分なインデックスを必要とし、クエリプランナはそれを残して、このユースケースは、 まれです復元。)
:誰がために良い回避策を知っているんこの?この制限を回避するキーワード検索を行うより良い方法はありますか?私は本当に他のプロパティのための順序とキーワードを使用して結合したいと思います。私が考えることができる唯一の解決策は、クエリの後にリストをソートすることですが、私がそれを行うとクエリにオフセットする能力がなくなり、データセットが大きい場合に最高のソート順で結果を得ることさえできないかもしれません。
あなたのヒントありがとうございます!
フルテキスト検索をご利用の場合は、Truster Testerプログラムにサインアップして、新しいapi:https://docs.google.com/a/google.com/spreadsheet/viewform?formkey= dEdWcnRJUXZ2VGR3YmVsT1Q1WVB2Smc6MQ – proppy