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

时间:2011-01-25 10:12:22

标签: php algorithm

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

2 个答案:

答案 0 :(得分:6)

将每个事件的得分与用户个人资料中的得分进行比较。偏差越小,事件越匹配用户的兴趣。

在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

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

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

答案 1 :(得分:0)

我不知道算法,但您可以将用户兴趣值与事件分数相乘,并将每个事件添加到所有事件中。这样您就可以为用户排列事件。

例如 用户1 答:8 B:6 C:0

用户2 A2 B:8 C:6

活动1 答:8 B:0 C:5

活动2 A2 B:6 C:0

用户1事件hitparade 事件1:64 事件2:52

用户2事件hitparade 事件2:52 事件1:46