最佳算法,用于根据用户的选择选择要呈现给用户的正确数据

Nic*_*tti 2 php algorithm

我正在开发一个项目,试图根据用户的兴趣匹配城市中的事件.基本上,前端的最终用户必须选择他的兴趣(文化,体育,乐趣,食物......其中有8个),其值范围从0到10.在后端(所有事件都是网站管理员可以为每个类别选择一个分数(文化,体育,娱乐......与前端相同).根据用户输入找到最相关结果的最佳算法是什么?我正在使用php(虽然我认为这不是特定于语言的问题).

rik*_*rik 6

将每个事件的分数与用户配置文件的分数进行比较.偏差越小,事件越匹配用户的兴趣.

在SQL中它可能是这样的:

SELECT ... FROM `events` WHERE ...  
ORDER BY (
    ABS(`culture` - $culture) 
    + ABS(`sports` - $sports) 
    + ABS(`fun` - $fun) 
    + ...
) ASC
Run Code Online (Sandbox Code Playgroud)

您还可以根据用户个人资料中的点数分布对分数进行加权.这意味着如果用户拥有$culture = 10和所有其他分数0,他对文化特别感兴趣,你可能会得到更好的结果

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

其中每个分数的重要性是该分数与用户所有分数的平均值的偏差.

您还可以为重要性值添加"spice",例如在超级碗期间推动体育赛事,以使您的网站更具时代性.