Разбавить поиск по пользователям

WITH RankedMessages AS (
    SELECT 
	n.id,
        n.id_u,
        n.time,
        n.title_prev,
        ROW_NUMBER() OVER (PARTITION BY n.id_u ORDER BY n.time DESC) AS rn
    FROM 
        indexnews n
	WHERE n.approve = 1
)
SELECT 
        id,
        id_u,
        time,
        title_prev
FROM 
    RankedMessages
ORDER BY 
    rn, time DESC, id_u

В mysql, вытаскиваем по 1 последней записи от каждого пользователя, как все уникальные публикации по 1 на одного пользователя достали. Выстраиваем таким образом, чтобы сперва было чередование.

  • Не должно получиться так, что 2 и более новости подряд были от одного пользователя
  • Допускается по 2 и более подряд, когда у других пользователей больше нет публикаций. Чем ближе конец, тем чаще будут чередоваться новости от одних и тех же пользователей.

Попробовал выполнить тоже самое с мантикоре, ничего не вышло. Попытался с нейросетью, множество вариантов. Ничего не выходит…

Может кто подскажет какой лучше вариант реализации подобного?

  • Сортировка по времени от большего к меньшему
  • Необходимо разбавить новости, чтобы избежать таких случаев когда идут подряд публикации от одгого пользователя. Исключение тогда, когда публикаций от других пользователей нету.

Попробовал выполнить тоже самое с мантикоре, ничего не вышло

А как пробовали? Кастомный ранкер использовали?