Как внедрить рекомендательную систему на сайте?

Добрый день!

Ситуация такая: есть сайт с N количеством юзеров, и есть M количество однородных оцениваемых объектов. Ну вот допустим рейтинг сериалов. Рекомендательная система должна обработать данные и на основании того, как и что оценили вы и на основании того, как и что оценили юзеры, предложить вам сериал, который скорее всего вам понравится.
То, как работает рекомендательная система я понимаю, как проанализировать, допустим, таблицу с колонками сериалы, строками юзеры понятно, алгоритмы есть.
Но как это оформить на сайте и внедрить?
То есть: есть база БД(MySQL), есть таблица вида User_rating, где колонка айди_юзер и колонка айди_сериал и колонка величина_рейтинга. Ну и дата. Но нам же нужна таблица совершенно другого вида, где в строках - айди юзера, а в столбцах - айди сериала, и на их перекрестии величина оценки. Для начала, насколько я понимаю, нужно решить эту проблему.
Я вижу пока только один вариант - сделать доп. таблицу и при добавлении в базу нового сериала добавлять столбец. Но выглядит чересчур костыльно и медленно.
Почитывал про noSQL, насколько я понимаю это вроде решает проблему, но не уверен, да и примеров в интернете не нашел.
Это первый вопрос.

А второй вопрос - даже, если, допустим, мы получили данную таблицу. Открываю страницу "рекомендации", где ожидаю список сериалов, которые скорее всего мне подойдут. При переходе запускаем питон скрипт для анализа. Но он же не вычисляет это за доли секунды, тем более с большим количеством людей и сериалов. И мы сидим ждем прогрузки. Ну, видимо это работает конечно не так. Вот в этом и вопрос. Может, делать доп таблицу, в которую вносить значения того, что мы ожидаем, что понравится юзерам, и обновлять ее каждый раз когда кто то оценивает сериал, но ведь это тоже очень долго.

Собственно вопрос - есть ли какие то решения? Ведь movielens именно так и работает, и видимо какие-то решения в интернете должны быть, ну точнее мне так кажется.
Если таких нет, может поможете идеей. Или я что-то сильно упускаю и просто нужно углубиться в тему

Заранее спасибо!
  • Вопрос задан
  • 630 просмотров
Решения вопроса 1
al_gon
@al_gon
С sql в данном случае все непросто.
Join через Join Join'ом погоняет, при динамических фильтрах это не весело.
В строну neo4j не смотрели?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы