說我有,看起來實體有點像這樣:谷歌應用程序引擎 - 關鍵字搜索+排序的其他屬性
class MyEntity(db.Model):
keywords = db.StringListProperty()
sortProp = db.FloatProperty()
我有一個過濾器,通過這樣做了關鍵字搜索:
query = MyEntity.all()\
.filter('keywords >=', unicode(kWord))\
.filter('keywords <', unicode(kWord) + u"\ufffd")\
.order('keywords')
這很好。我遇到的問題是,如果我嘗試使用'sortProp'命令:
.order('sortProp')
排序無效。我知道爲什麼 - 文件明確表示,這是不可能的,使用了多值屬性平等過濾器時,該排序順序將被忽略(從谷歌文檔):
的一個重要警告是既具有平等查詢過濾器和多值屬性上的排序順序。在這些查詢中,排序 訂單被忽略。對於單值屬性,這是一個簡單的 優化。每個結果都將具有相同的屬性值, 因此結果不需要進一步排序。但是,多值 屬性可能具有其他值。由於忽略排序順序爲 ,因此與應用排序順序相比,查詢結果可能以不同的順序返回 。 (恢復下降排序順序 將是昂貴的,並且需要額外的指標,而這個用例是 罕見,所以查詢規劃離開它關閉。)
我的問題是:沒有人知道一個很好的解決方法爲這個?有沒有更好的方法來做一個關鍵字搜索,以規避這種限制?我真的很想結合使用關鍵字和其他屬性的排序。我能想到的唯一解決方案是在查詢後對列表進行排序,但如果這樣做的話,我失去了對查詢進行偏移的能力,如果數據集很大,我甚至可能無法獲得排序順序最高的結果。
感謝您的提示!
如果全文檢索是你是什麼之後,你可能想上申請到委託人的測試人員計劃爲新的API:https://docs.google.com/a/google.com/spreadsheet/viewform?formkey= dEdWcnRJUXZ2VGR3YmVsT1Q1WVB2Smc6MQ – proppy 2012-01-10 10:38:47