我需要找到一种主要通过查找相关标签来获取相关视频的方法。
首先让我们看看我的标签存储在数据库中的方式:
请注意,这不是MySQL数据库,我正在使用Cassandra。
因此,您可以看到每个标记都包含具有该标记的帖子ID列表。这种方式获取post id很容易,用SQL语言我会说:
SELECT * from tags WHERE id = "cars" AND id = "movies"
。
那么这部分很容易,现在我有很多带相关标签的帖子,对吗?
但是这里出现了我无法克服的问题。由于一个帖子可以拥有比另一个帖子更多的相关标签,因此比其他帖子更重要。当然,我可以将一些东西放在一起,看看哪个帖子有更多相关的标签,但另一个问题是另一个更严重的问题。
假设我们有20个标签,所以我们寻找20行,这20行一起包含大约1亿个ID,运行1亿个ID并将它们相互比较需要很多资源和时间。所以我问这种情况如何改善?
答案 0 :(得分:0)
您可能需要考虑更改管理数据库中标记的方式。我假设你有一个'帖子'表;也许您应该在该表中添加“标签”列,而不是为标签添加单独的表。
除了可以非常快速地访问相关标签..
如果空间不是真正的问题,你可以在每个帖子的'标签'栏中做一个全文索引(或者更确切地说,Cassandra等价物),甚至可以在很短的时间内访问相关的帖子。当然,您仍然需要限制搜索相关帖子,但这只是使用LIMIT的问题。