2016-09-07 3 views
1

, если сообщения пользователей состоят из комментариев и комментариев, а также даты создания, как я могу реализовать какой-то рейтинг, который включает количество комментариев и комментариев, а также дату создания и возвращения сообщений с самого высокого сообщения до самого низкого.Рейтинг сообщений всех пользователей от самого высокого до самого низкого

+0

Это в вашем слое данных. Вы бы добавили рейтинг ранжирования в таблицу и отсортировали или группировали по дате и пользователю. Кроме того, вы найдете больше удачи здесь в SO, разместив конкретные вопросы с кодом и конкретной проблемой. –

ответ

2

То, что вы ищете, называется Ranked Feeds. Ранжированные каналы позволяют настраивать ранжирование действий; вы можете использовать свою собственную формулу для вычисления оценки каждого вида деятельности. Пока у вашей деятельности есть необходимая информация (например, likes_count, comments_count), чем вы можете использовать это для ранжирования ваших каналов.

Вот простой пример ранжирования формулы:

{ 
    "score": "likes_count + comments_count", 
    "defaults": { 
     "likes_count": 0, 
     "comments_count": 0 
    } 
} 

Очень распространенный подход заключается в сочетании популярен счет с возрастом активности. Для этого вы можете использовать одну из функций time decay и умножить результаты на сумму понравившихся и комментариев.

Например:

{ 
    "functions":{ 
    "popularity_gauss":{ 
     "base":"decay_gauss", 
     "scale":"5d", 
     "offset":"1d", 
     "decay":"0.3" 
    } 
    }, 
    "defaults": { 
     "likes_count": 0, 
     "comments_count": 0 
    }, 
    "score":"popularity_gauss(time) * (likes_count + comments_count)" 
} 

Пример использует функцию decay_gauss со шкалой, смещения и параметров распада. При выбранных параметрах действия будут уменьшаться, если они пройдут 1-дневный порог. Оценка будет уменьшена до трети для мероприятий, которые составляют 5 дней.

синхронизирует данные

Два счетчиков, которые мы использовали в примере likes_count и comments_count явно меняются с течением времени. Чтобы работать с Ranked Feeds, вам необходимо синхронизировать эти значения. Данные о деятельности могут быть обновлены using the APIs.

Примечание: поскольку API обновления активности не поддерживает частичные обновления, рекомендуется не обновлять действия транзакционно (например, пользователь нажимает на like -> send API-вызов для обновления счетчика от X до X + 1), но для выполнения обновления навалом каждые X секунд.

CRONTAB например, каждые 5 минут:

*/5 * * * *  /path/to/script/update_activities_counters 
Смежные вопросы