3

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

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

在此处输入图像描述

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

如您所见,每个标签都包含一个具有该标签的帖子 ID 列表。这样获取帖子 ID 会很容易,用 SQL 语言我会说:

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

好吧,这部分很容易,现在我有大量带有相关标签的帖子,对吧?

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

假设我们有 20 个标签,所以我们查找 20 行,这 20 行总共包含大约 1 亿个 id,运行 1 亿个 id 并将它们相互比较需要大量资源和时间。所以我想问这种情况如何改善?

4

1 回答 1

0

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

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

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

如果空间不是真正的问题,您可以对每个帖子的“标签”列进行全文索引(或者更确切地说,Cassandra 等效项),甚至可以在短时间内访问相关帖子。当然,您仍然需要限制搜索相关帖子,但这只是使用 LIMIT 的问题。

于 2013-03-31T17:12:56.233 回答