Получить самые популярные предметы в Grails - PullRequest
0 голосов
/ 12 января 2010

Моя упрощенная модель домена в Grails выглядит следующим образом:

Article {
    Integer totalViews
    static hasMany = [
        ratings: Rating
    ]
}

Rating {
    Integer value // 1 to 5
    User user
}

Я пытаюсь найти 5 самых популярных статей, основанных на totalViews и рейтингах, скажем, 25% веса для просмотров и 75% веса для оценок.

Как бы вы сделали это в Groovy / Grails?

1 Ответ

2 голосов
/ 13 января 2010

Я бы, наверное, попробовал это сделать с HQL-запросом, а значит, версия attributeBuilder была бы довольно волосатой.

Я не уверен, какой будет лучший алогритм для желаемого веса. Но без этого вам нужно что-то вроде:

from Article a order by avg(a.ratings.value) desc, a.totalViews desc

Затем ограничить запрос до 5 результатов

Article.executeQuery('from Article...', max:5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...