我需要通过主要寻找相关标签来找到一种获取相关视频的方法。
首先让我们看一下我的标签在数据库中的存储方式:
请注意,这不是 MySQL 数据库,我使用的是Cassandra。
如您所见,每个标签都包含一个具有该标签的帖子 ID 列表。这样获取帖子 ID 会很容易,用 SQL 语言我会说:
SELECT * from tags WHERE id = "cars" AND id = "movies"
.
好吧,这部分很容易,现在我有大量带有相关标签的帖子,对吧?
但是我无法克服的问题来了。由于一个帖子可以比另一个帖子具有更多相关标签,因此它比其他帖子更重要。当然,我可以一起破解一些东西,看看哪个帖子有更多相关的标签,但另一个更严重的问题来了。
假设我们有 20 个标签,所以我们查找 20 行,这 20 行总共包含大约 1 亿个 id,运行 1 亿个 id 并将它们相互比较需要大量资源和时间。所以我想问这种情况如何改善?