0

我想通过查找与相关帖子共有标签数量最多的帖子来查找相关帖子。我可以在 SQL 查询中执行此操作,但由于我将有成千上万的帖子,每个帖子都有几十个标签,我想知道 CouchDB 是否会是一个更好的选择?如果是这样,它将如何在 CouchDB 中工作?

相关地考虑这个问题,这里是结构:

post: id, (other post data)
tag: id, (other tag data)
post_tag: post_id, tag_id

SQL 查找帖子#X 的前 10 个最相关的帖子:

select r.post_id
from post_tag p join post_tag r on p.tag_id = r.tag_id
where p.post_id = X and r.post_id != X
group by r.post_id
order by count(*) desc
limit 10

此查询提供与帖子 X 相同标签最多的前 10 个帖子。

我可以更有效地从 CouchDB 获得相同的结果吗?如何?

4

1 回答 1

0

此查询提供与帖子 X 相同标签最多的前 10 个帖子。

使用 Map/Reduce 计算这种查询非常糟糕,因为对于每个文档,您必须为每个标签组合生成一个键。此外,您将需要几个链式 map/reduce 才能有效地实现这一目标。所以 CouchDB 绝对不是一个简单的方法。

正如 Marcin 所写,您可以“作弊”并在 CouchDB 上使用搜索服务器,但您的 SQL 查询似乎更优雅。

于 2012-11-02T13:20:03.613 回答