Я бы, наверное, попробовал это сделать с HQL-запросом, а значит, версия attributeBuilder была бы довольно волосатой.
Я не уверен, какой будет лучший алогритм для желаемого веса. Но без этого вам нужно что-то вроде:
from Article a order by avg(a.ratings.value) desc, a.totalViews desc
Затем ограничить запрос до 5 результатов
Article.executeQuery('from Article...', max:5)