сегодня в 18:28
Рассмотрим на примере. Допустим у нас есть пользователь A, для которого мы бы хотели получить K свежих постов. Как видно из рисунка данный пользователь связан с тремя другими пользователями (но их может быть гораздо больше). Нам необходимо сформировать для него набор из K самых свежих постов от его «друзей».
Для решения данной задачи можно сделать следующее. Для каждого пользователя сети мы будем хранить документ UserPostMetadata содержащий следующие поля:
- Id пользователя;
- LastPubDate — дата последней публикации пользователя;
- LastPubs — набор из K элементов вида { PubId, AddDate }, где PubId – идентификатор поста, AddDate – дата публикации поста. Набор должен содержать информацию о K последних публикаций пользователя.
Данный документ будет создаваться для каждого пользователя и обновляться при добавление пользователем новой публикации. При этом LastPubDate будет устанавливаться в текущую дату, а набор LastPubs будет модифицироваться путем удаления последнего элемента и добавлением в начало нового содержащего данные для новой публикации.
Тогда, данные для пользователя A могут быть представлены следующим образом.
Для формирования k последних постов для пользователя A, мы возьмем K документов UserPostMetadata пользователей из списка друзей A, упорядоченные по LasPubDate. В данном наборе будут точно содержаться, K самых новых публикаций. Нам остается объединить наборы LastPubs выбранных документов UserPostMetadata, упорядочить их по времени AddDate и выдать первые K. Так как первые K будут содержать самые новые публикации его друзей.
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:
- Massacres That Matter - Part 1 - 'Responsibility To Protect' In Egypt, Libya And Syria
- Massacres That Matter - Part 2 - The Media Response On Egypt, Libya And Syria
- National demonstration: No attack on Syria - Saturday 31 August, 12 noon, Temple Place, London, UK
Комментариев нет:
Отправить комментарий