【问题标题】:Filter posts by multiple tags to return posts that have all those tags, with good performance按多个标签过滤帖子以返回具有所有这些标签的帖子,性能良好
【发布时间】:2010-03-01 23:58:48
【问题描述】:

StackOverflow 允许您按标签搜索帖子,并允许您按标签的交集进行过滤,例如ruby x mysql x tags。但通常使用标记上的多重连接从 MySQL 检索此类列表效率低下。实现按多个标签查询过滤的更高效的方法是什么?

有没有很好的 NoSQL 方法来解决这个问题?

【问题讨论】:

    标签: mysql couchdb nosql tagging join


    【解决方案1】:

    在 NoSQL 或面向文档的场景中,您会将实际标签作为文档的一部分,可能存储为列表。既然你用“couchdb”标记了这个问题,我会用它作为例子。

    CouchDB 中的“发布”文档可能如下所示:

    {
       "_id": <generated>,
       "question": "Question?",
       "answers": [... list of answers ...],
       "tags": ["mysql", "tagging", "joins", "nosql", "couchdb"]
    }
    

    然后,生成一个以标签为键的视图:

    {
       "_id": "_design/tags",
       "language": "javascript",
       "views": {
          "all": {
             "map": "function(doc) {
                emit(doc.tags, null);
             }"
          }
       }
    }
    

    在 CouchDB 中,您可以根据需要使用多个密钥发出 HTTP POST。一个例子是在the documentation。使用该技术,您将能够通过多个标签进行搜索。

    注意:将上面的值设置为 null 有助于保持视图较小。如果您还想查看实际文档,请在查询中使用 include_docs=true

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多