计算在Google App Engine数据存储区中计算得分和日期的索引

时间:2015-07-17 14:11:21

标签: python google-app-engine google-bigquery google-cloud-datastore google-prediction

我正在开发基于Google App Engine(python)的网站,该网站允许用户生成内容,并对该内容进行投票(喜欢/不喜欢)。

我们的设计师非常模糊地指出首页应该是最近内容和热门内容之间的平衡,可能假设这些只是创建一个评分值,重视喜欢/不喜欢时间 - 以及 - 创建。最终,目标是(1)不良内容被快速过滤掉,(2)继续受欢迎的内容停留时间更长,(3)新内容有机会保持足够长的时间以获得足够的投票来确定其是否好还是坏。

我可以根据喜欢/不喜欢轻松计算得分。但是,将时间因素结合起来产生可以索引的单个分数似乎并不可行。我基本上需要每天重新索引所有内容以调整其分数,一旦我们有大量内容,这似乎成本过高。所以,我对可能的解决方案感到茫然。

我还提出了我们计时的地方(所有时间,每天,每周),但他说用户不太可能查看默认视图以外的标签。此外,如果我根据上周进行过滤,我需要按时排序,然后二次受欢迎程度排序基本上没有意义,因为提交时间几乎是唯一的。

对于我可能忽略的解决方案的任何建议?

Google的Prediction API或BigQuery能够更好地处理这个问题吗?

1 个答案:

答案 0 :(得分:2)

这种系统通常被称为" frecency",并且有许多方法可以做到这一点。一种方法是让投票“衰败”。随着时间的推移;我过去在App Engine上通过存储当前得分和最后更新来实现了这一点;在存储两者之前,任何投票都会根据最后更新的时间对分数进行指数衰减,并且后台进程每天运行几次以更新任何尚未获得投票的帖子的分数和衰减时间。一会儿。因此,一个帖子的得分总是倾向于0,除非它一直收到赞成票。

另一个更简单的系统是序列号。每当有人投票支持帖子时,请增加其号码。因此,自然排序是通过创建顺序,但投票用于“重新洗牌”。事情,在更新但更少投票的帖子之前投入更多的投票。