【发布时间】:2012-08-28 17:58:43
【问题描述】:
背景:我有帖子和用户,两者都是 HABTM 社区。在我的帖子模型中,我有一种方法可以通过比较他们有多少共同社区来计算帖子与给定用户的相关性:
def relevance(user)
(self.communities & user.communities).length
end
目标:通过给定的相关性查询帖子,即
Post.where(:relevance => 3)
或
查询所有帖子并按相关性排序
Post.all.desc(:relevance)
我知道某处需要用户变量,只是想知道这样的事情是否可行或是否存在解决方法。
【问题讨论】:
-
我担心你不能直接这样做。但是你可以使用一些 map/reduce 处理。
-
你能扩大一点吗?我不确定你想要完成什么。相关性在哪里计算,是否已经存在于文档中?
-
相关性是作为 post.rb 中的一种方法计算的(参见上面的代码),因为每个用户的相关性都不同,并且必须即时计算。
-
啊,好的,所以您滚动浏览分配此功能的每个帖子,现在您想按该功能对下摆进行排序。我相信 MongoDB 在其驱动程序中本身并不支持此功能,因此您可能需要找到一个可以为您执行此操作的函数,可能是 ruby 中的快速排序函数。我个人不知道,因为我不是 ruby 程序员。
标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid mongoid3