【问题标题】:Tagging schema for CouchDB. Would this work?CouchDB 的标记模式。这行得通吗?
【发布时间】: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 的全文索引选项,但如果可能的话想避免这种情况。谢谢。

【问题讨论】:

    标签: couchdb tagging


    【解决方案1】:

    我认为没有充分的理由让事情变得复杂 - 只需为每张卡片创建一个文档,并在进行过程中为这些文档添加标签。创建一些存储视图以在需要时计算/显示标签及其使用次数。

    这样你只需要:

    卡片文件:

    问题 回答 标签[]

    观看次数:

    显示卡片信息 显示(可能是最受欢迎的)标签 每个标签显示卡片

    只要您的文档结构正确,您就不需要全文搜索来处理所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2011-10-23
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多