- PVSM.RU - https://www.pvsm.ru -
Привет! Когда мы работали над finle.ru [1], встал вопрос о реализации самих рекомендаций, способов придумали несколько, хотелось бы поделиться с сообществом, возможно кто-нибудь предложит идеи по-интереснее.
Первый способ, именно он сейчас и используется на сайте, как самый оптимальный. В базе хранятся пары, вида game_id1 | game_id2 | points. Эти пары формируются следующим образом: допустим ранее мы оценили несколько игр, в базе это выглядит так
| Id игры | Название игры | Оценка |
|---|---|---|
| 1 | Team Fortress 2 | 9 |
| 2 | Counter-Strike | 8 |
| 3 | Half-Life | 6 |
Теперь мы поставили игре Half-Life 2 с id=4 оценку 9. Сразу после оценки мы выбираем все предыдущие наши отметки с оценкой >= 7 (в нашем случае это id=1,2) и записываем в базу каждую эту игру в пару с последней оценкой. Т.е. пары 4 и 1, 4 и 2, а в поле points указываем оценку этой игры, если же в базе такая запись уже существует, то мы просто прибавляем к полю points величину равную оценке. Получается такая таблица
| game_id1 | game_id2 | points |
|---|---|---|
| 4 | 1 | 9 |
| 4 | 2 | 8 |
Выбрать id рекомендованных игр из базы теперь очень просто: получаем id игр, которые мы оценили оценкой >= 7, запрашиваем по этим id пары и сортируем по полю points.
Плюсы
Минусы
Чем отличается одна игра от другой? Сюжетом, графикой, жестокостью, юмором, запутанностью, список можно продолжать очень долго, именно на этих свойствах и строился наш второй способ. Каждой игре в базе мы выставляли эти свойства, по десяти-бальной шкале. Всего таких свойств было около десяти. У пользователя в базе хранились точно такие же свойства, только в виде промежутка. Так с каждой новой оцененной игрой, эти промежутки изменялись и можно было показывать новые игры, входящие в промежуток. Подробности рассказывать не стану, все просто.
Плюсы
Минусы
Автор: Troytft
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/igry/2814
Ссылки в тексте:
[1] finle.ru: http://finle.ru
Нажмите здесь для печати.