数据结构,构建真正的“相关标签”项目列表的最佳实践?

时间:2010-01-25 10:45:25

标签: data-structures tags

我的意思是说真的“标签相关”列表?

让我们假设这篇文章有3个标签:A,B,C。这个项目真正的“标签相关”文章将是拳头上有A,B,C标签的文章,然后是(A,B),(A,C) ),(B,C)等。

table:tags

tag_id
tag_title
tag_nicetitle

table:tags2articles

article_id
tag_id

使用此表结构太难以计算真实的“与标签相关”。

我们可以添加一个包含article_id的表,它是md5(A,B,C)。在散列之前,我们应该按字母顺序对标签进行排序。

table:article_tags_hashed

id
article_id
md5
count

此表将帮助我们找到包含完整标签集(A,B,C)的文章,但它无助于查找仅包含(A,B),(A,C),(B, C)

最佳做法是什么?

PS:对不起我的英文,这很糟糕。

1 个答案:

答案 0 :(得分:1)

我认为您不需要 article_tags_hashed ,因为您可以在结束时对结果进行分组和统计 查询 tags2articles

示例:

select article_id, count(article_id) as tagcnt from tags2articles
where tag_id in (...)
group by article_id
order by tagcnt desc

首先放置包含最多标签的文章。