Лучший алгоритм выбора правильных данных для представления пользователю на основе его выбора - PullRequest
2 голосов
/ 25 января 2011

Я работаю над проектом, который пытается сопоставить события в городе на основе интересов пользователя.По сути, конечный пользователь в интерфейсе должен выбрать свои интересы (культура, спорт, развлечения, еда ... их 8) со значениями от 0 до 10. В конце (где все событиясоздано) веб-мастер может выбрать оценку для каждой категории (культура, спорт, развлечения ... так же, как интерфейс).Какой алгоритм лучше всего использовать для поиска наиболее релевантных результатов на основе пользовательского ввода?Я использую PHP (хотя я думаю, что это не вопрос конкретного языка).

Ответы [ 2 ]

6 голосов
/ 25 января 2011

Сравните каждый из баллов событий с тем из профиля пользователя.Чем ниже отклонение, тем лучше событие соответствует интересам пользователя.

В SQL это может выглядеть примерно так:

SELECT ... FROM `events` WHERE ...  
ORDER BY (
    ABS(`culture` - $culture) 
    + ABS(`sports` - $sports) 
    + ABS(`fun` - $fun) 
    + ...
) ASC

Вы также можете взвесить результаты в соответствии с распределением баллов в профиле пользователя.Это означает, что если у пользователя $culture = 10 и все остальные баллы 0, он особенно интересуется культурой, и вы можете получить лучшие результаты с

SELECT ... FROM `events` WHERE ...  
ORDER BY (
    (ABS(`culture` - $culture) * $cultureImportance)
    + (ABS(`sports` - $sports) * $sportsImportance)
    + (ABS(`fun` - $fun) * $funImportance)
    + ...
) ASC

, где важность каждого балла - это отклонение этого балла отсреднее значение всех баллов пользователя.

Вы также можете добавить «специю» к значениям важности, например, для продвижения спортивных событий во время суперкубка, чтобы сделать ваш сайт более привлекательным.

0 голосов
/ 25 января 2011

Я не знаю об алгоритме, но вы можете умножить значения интереса пользователей на баллы событий и добавить их все для каждого события. Таким образом, вы можете ранжировать события для пользователя.

Например Пользователь 1 A: 8 Б: 6 С: 0

Пользователь 2 A: 2 Б: 8 С: 6

Событие 1 A: 8 B: 0 С: 5

Событие 2 A: 2 Б: 6 С: 0

Событие пользователя 1 hitparade Событие 1: 64 Событие 2: 52

Событие пользователя 2 hitparade Событие 2: 52 Событие 1: 46

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...