【问题标题】:Get a list of all unique tags used within a set of entities获取一组实体中使用的所有唯一标签的列表
【发布时间】:2011-08-20 23:21:07
【问题描述】:

我有两个模型:GroupItem。一个Item 有一个标签列表并且属于一个Group

class Group(db.Model):
    name = db.StringProperty()

class Item(db.Model):
    title = db.StringProperty()
    tags = db.StringListProperty()
    group = db.ReferenceProperty(Group)

到目前为止,典型的操作是向Item 添加标签,从Item 中删除标签,并显示与给定Group 和标签匹配的所有Items。

获取Group 中使用的所有唯一标签列表的好方法是什么?

理想情况下,我希望在 Group 中有一个属性来反映所使用的标签:

class Group(db.Model):
    name = db.StringProperty()
    aggregated_tags = db.StringListProperty()

如果这包括具有此标签的Items 的数量会更好。

永久一致性不是必需的,即,如果标签的聚合列表与实际使用的标签列表不匹配,只要它们最终保持一致即可。

ItemGroup 不在同一个实体组中,所以我不能同时更新 ItemGroup 的事务。

【问题讨论】:

    标签: google-app-engine gql


    【解决方案1】:

    最好的方法是自己维护它。每当您在项目中添加或删除标签时,都会更新标签列表。如果您想异步执行此操作,可以在任务队列任务中执行此操作。

    或者,您可以编写一个定期运行的 mapreduce,重新计算每个组的标签集 - 事实上,这几乎是 mapreduce 的经典用例。

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多