Я имею дело с проблемой рекомендации, в которой задействовано 3 миллиона пользователей и 500 000 продуктов. Цель рекомендации - рекомендовать 5-10 дополнительных продуктов конкретному пользователю при посещении данного продукта.Рекомендатель большого масштаба
Мы закончили часть двигателя для рекомендаций в режиме реального времени, но мы обнаружили, что ее не так-то просто рекомендовать через 1-2 секунды. Мы рассмотрим две стратегии:
Выполнить рекомендацию офф-лайн в пакетном режиме, а затем сохранить результаты в MySQL DB. Однако, похоже, что количество записей в таблицах - огромное количество. Каждый пользователь для каждого продукта должен хранить не менее 5-10 рекомендованных продуктов. Если я создам таблицу с именем пользователя и продуктом в качестве атрибутов таблицы, то будет 3 миллиона х 500 000 записей.
Предсказать рекомендацию «на лету». Мы просто попробовали, но время ответа слишком велико.
Может ли кто-нибудь дать мне несколько предложений по этой проблеме?
Почему вы генерируете пользователя для каждого элемента? (просто любопытно) –
Это зависит от того, как работает механизм рекомендаций. Если механизм рекомендаций просто смотрит на недавние покупки клиентов (что должно быть относительно немного), и есть какой-то (эффективный) индекс между недавними покупками и рекомендуемыми продуктами , то рекомендации в реальном времени должны быть вполне осуществимыми. Не могли бы вы рассказать нам немного больше о том, как работает механизм рекомендации? – Justin