mysql – 按多个标签过滤帖子以返回包含所有这些标签的帖子,并且性能良好

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

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

解决方法:

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

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

{
   "_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.

相关文章

校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮...
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉...
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透...
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)