【发布时间】:2010-10-18 19:41:26
【问题描述】:
我想知道以下场景是否适合 CouchDB?我正在构建一个基于 Web 的抽认卡应用程序。用户可以创建抽认卡(一方面是问题,另一方面是答案)。抽认卡作者和其他用户可以用关键字/短语标记抽认卡。用户可以根据标签检索/生成虚拟卡片堆,包括支持布尔搜索(tagA AND tagB NOT tagC OR tagD)。数据库将存储卡片(显然),但也为用户、标签和潜在的虚拟卡片堆栈存储“文档”。我已经阅读了有关 CouchDB 中标记的其他 SO 问题,但我想知道以下内容是否可行或编写密集型……(1)卡片文档包含分配给该卡片的标签字符串的 JSON 数组,(2)标签文档包含卡片的 JSON 数组使用标签,(3)标签文档也有元素来存储使用该标签的卡片计数,(4)每当创建新卡片或将标签添加到卡片时,相关的卡片标识符也会添加到标签文档中,并且标签文档的 CardCount 元素递增。 (5) 生成由卡片ID索引的卡片和由标签字符串索引的标签的永久视图。如果我知道卡片 ID,我可以快速找到文档并快速获取相关标签列表。如果给我一个标签字符串,我可以快速找到标签文档,然后使用标签获取卡片 ID 列表。对于更精细的布尔搜索,我可以在布尔搜索中检索每个标签的卡片 ID 列表,然后在客户端上找出这些集合的并集/交集/等。这看起来合理吗?我知道使用 Lucene 的全文索引选项,但如果可能的话想避免这种情况。谢谢。
【问题讨论】: