我在grails中的简化域模型是这样的:
Article {
Integer totalViews
static hasMany = [
ratings: Rating
]
}
Rating {
Integer value // 1 to 5
User user
}
我试图找到基于totalViews和评级的5个最受欢迎的文章,比如25%的观看权重和75%的评分权重。
你会如何在Groovy / Grails中做到这一点?
答案 0 :(得分:2)
我可能会尝试使用HQL查询,criteriaBuilder版本会非常多毛。
我不确定你想要的加权最好的算法是什么。但如果没有这个,你需要这样的东西:
from Article a order by avg(a.ratings.value) desc, a.totalViews desc
然后将查询限制为5个结果
Article.executeQuery('from Article...', max:5)