相关标签算法

时间:2013-03-31 13:50:35

标签: php algorithm tags cassandra

我需要找到一种主要通过查找相关标签来获取相关视频的方法。

首先让我们看看我的标签存储在数据库中的方式:

enter image description here

请注意,这不是MySQL数据库,我正在使用Cassandra

因此,您可以看到每个标记都包含具有该标记的帖子ID列表。这种方式获取post id很容易,用SQL语言我会说:

SELECT * from tags WHERE id = "cars" AND id = "movies"

那么这部分很容易,现在我有很多带相关标签的帖子,对吗?

但是这里出现了我无法克服的问题。由于一个帖子可以拥有比另一个帖子更多的相关标签,因此比其他帖子更重要。当然,我可以将一些东西放在一起,看看哪个帖子有更多相关的标签,但另一个问题是另一个更严重的问题。

假设我们有20个标签,所以我们寻找20行,这20行一起包含大约1亿个ID,运行1亿个ID并将它们相互比较需要很多资源和时间。所以我问这种情况如何改善?

1 个答案:

答案 0 :(得分:0)

像大多数人在评论中所说的那样..

您可能需要考虑更改管理数据库中标记的方式。我假设你有一个'帖子'表;也许您应该在该表中添加“标签”列,而不是为标签添加单独的表。

除了可以非常快速地访问相关标签..

如果空间不是真正的问题,你可以在每个帖子的'标签'栏中做一个全文索引(或者更确切地说,Cassandra等价物),甚至可以在很短的时间内访问相关的帖子。当然,您仍然需要限制搜索相关帖子,但这只是使用LIMIT的问题。