2013-03-31 71 views
3

我需要找到一种方法来获取相关的视频,主要是寻找相关的标签。相关标签算法

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

enter image description here

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

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

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

那么这个部分很容易,现在我有吨相关标签的帖子,对吧?

但是这里出现了我无法克服的问题。由于一个帖子可以具有比另一个更多的相关标签,所以它比其他帖子更重要。当然,我可以一起攻击一些东西,看看哪个帖子有更多相关标签,但是其他更严重的问题来了。

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

+0

Y U没有Mysql? – samayo

+4

@phpNoOb你的昵称可以回答你的问题 – Linas

+0

我认为像'SELECT COUNT(*)AS count FROM tags WHERE post_ids LIKE'%id here%';'会有所帮助。 – Licson

回答

0

像大多数人都在说在评论..

你可能要考虑改变您在数据库管理代码的方式。我假设你有一个'职位'表;也许你应该为该表添加一个“标签”列,而不是为标签提供一个单独的表。

除了具有相关变量非常快接..

如果空间不是一个真正的问题,你可以做一个全文索引(或者更确切地说,卡桑德拉当量)每一个职位的“标签”列,甚至能够在短时间内访问相关帖子。当然,您仍然必须对搜索相关帖子设置限制,但这只是使用LIMIT的问题。