2
我在GAE应用程序中有以下模型。关于GAE数据存储区的索引
class User
school_name = db.StringProperty(Indexed=True)
country = db.StringProperty(Indexed=True)
city = db.StringProperty(Indexed=True)
sex = db.StringProperty(Indexed=True)
profession = db.StringProperty(Indexed=True)
joined_date = db.DateTimeProperty(Indexed=True)
而我想通过这些字段的组合来过滤用户。过滤器的结果应该首先显示最近加入的用户。所以这意味着任何查询以命令操作结束,我想。这样的:
User.all().filter('country =','US').filter('profession =','SE').order('-joined_date')
User.all().filter('school_name =','AAA').filter('profession =','SE').order('-joined_date')
....
User.all().filter('sex =','Female').filter('profession =','HR').order('-joined_date')
所有这些字段组合是C(5,1)+ C(5,2)+ ... + C(5,5)= 31
我的问题是要实现它,是否需要为Google AppEngine中的所有这些情况(31)创建索引。或者你可以建议其他方式来实现它?
注:在C(n,k)是组合公式,多见于http://en.wikipedia.org/wiki/Combination
提前感谢!
您所描述的问题称为“爆炸索引”。下面的尼克对你有一些很好的建议。 – 2011-04-21 11:54:35
谢谢贾斯汀,现在我知道它被称为'爆炸索引' – Nyambaa 2011-04-21 12:16:02