4
StackOverflow允许您通过标签搜索帖子,并允许您通过标签的交集进行过滤。 ruby x mysql x tags
。但通常使用标签中的多重连接从MySQL中检索这样的列表效率不高。什么是更高性能的方式来实现逐个标签查询?通过多个标签过滤帖子以返回包含所有这些标签的帖子,并且性能良好
有没有一个很好的NoSQL方法来解决这个问题?
StackOverflow允许您通过标签搜索帖子,并允许您通过标签的交集进行过滤。 ruby x mysql x tags
。但通常使用标签中的多重连接从MySQL中检索这样的列表效率不高。什么是更高性能的方式来实现逐个标签查询?通过多个标签过滤帖子以返回包含所有这些标签的帖子,并且性能良好
有没有一个很好的NoSQL方法来解决这个问题?
在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
。