2

所以我正在做一个宠物项目,我在其中存储各种文本文件。我已设置我的应用程序以将标签保存为我的一个集合中的字符串,因此示例如下:

技术标签: “Linux Apache WSGI”

存储它们并搜索它们工作得很好,但是当我想做一个标签云之类的事情时,我的问题来了,计算所有不同的标签,或者基于标签制作一个动态选择系统,将它们分解为的最佳方法是什么一起工作?还是我应该以其他方式存储它们?

从逻辑上讲,我可以扫描每条记录并获取所有标签,根据空间打破它们,然后以某种方式缓存结果。也许这是正确的答案,但我想问问社区的智慧。

我正在使用 pymongo 与我的数据库进行交互。

4

1 回答 1

6

还是我应该以其他方式存储它们?

存储标签的标准方法是将它们存储为数组。在您的情况下,数据库看起来像:

tags: ['linux', 'apached', 'wsgi']

... 将它们分开工作的最佳方法是什么?

这就是Map/Reduce的设计目的。这有效地“扫描了每条记录”。Map/Reduce 的输出是您可以查询的另一个集合。

但是,还有另一种方法可以做到这一点,那就是保留“计数器”并更新它们。因此,当您保存新文档时,您还会增加与该文档相关的所有标签。

于 2011-07-25T00:39:54.190 回答