如何从文章表格中获取10个最受欢迎的标签?

时间:2009-12-05 16:43:26

标签: mysql database tags tagging

我在我的数据库中有一个带有文章名称和文章标签的表格。文章标签是一个字符串列,其中包含标签:“人,生活,总统”。每篇文章都以这种方式标记。

现在我想为整篇文章获得10个最受欢迎的标签。怎么做?

2 个答案:

答案 0 :(得分:8)

如果您有可能,最好更改数据库架构,以获得文章表,标记表和article_tags表。

这样可以更有效地匹配标签(比如你想要做的那些),特别是如果你有很多文章。

使用您当前的设计,您将完全迭代(可能是大的)文章表,并维护一堆标签(通过临时表 - 在这种情况下,您可以通过存储过程执行 - 或者在应用代码中)。整体来说真的很无效。

答案 1 :(得分:1)

如果规范化数据库并创建单独的标记表,那将会容易得多。例如,如果您有这样的数据库:

article
    article_id
    article_title
    article_content

article_tag
    tag_name
    article_id
    UNIQUE INDEX (tag_name, article_id)
    UNIQUE INDEX (article_id, tag_name) # in order to perform fast lookups in both directions

(通过创建包含tagtag_name的{​​{1}}表,并将tag_id替换为tag_name,可以进一步规范化在tag_id中。)

现在,您可以使用查询显示最常用标签的列表,例如:

article_tag