У меня есть список контента с разными категориями, а также со временем создания и, возможно, временем истечения, которое меняется с течением времени (новые элементы добавляются к нему), у меня также есть много пользователей с разными предпочтениями. Теперь я хочу показать это новое содержание пользователей каждый раз, когда они спрашивают об этом, без дублирования, но также с некоторой степенью случайности. Очевидно, что я не могу сохранить все показанное содержимое пользователю и каждый раз проверять весь набор. Одним из возможных решений является использование некоторых кластеров и назначение каждого пользователя кластеру и сохранение некоторых данных для каждого кластера, но я думаю, что есть лучший способ.Как случайным образом выбирать новые элементы из списка элементов расширения для каждого пользователя?
Редактировать: ОК, задав тот же вопрос у моих коллег, они предложили «Bloom Filters», с кем с ними согласен?
Это хорошее решение для ограниченного числа пользователей или контента, но у меня есть миллионы пользователей, миллионы контента (с тысячами категорий), и каждый пользователь имеет десятки интересов; Я думаю, что накладные расходы вашего решения слишком много, не так ли? – Separius
Что вы делаете в этом случае - пользователи карт на машинах, и каждая машина отслеживает, что ей нужно. Также есть оптимизация вокруг вставки вещей в очередь приоритетов для каждого пользователя только в последнюю минуту. Но в конце концов вы пытаетесь решить ту же инфраструктурную проблему, что и в Twitter, и это будет трудно по тем же причинам, что и для них. – btilly