首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据用户的选择选择正确数据的最佳算法

根据用户的选择选择正确数据的最佳算法
EN

Stack Overflow用户
提问于 2011-01-25 10:12:21
回答 2查看 170关注 0票数 2

我正在做一个项目,试图根据用户的兴趣来匹配城市中的事件。基本上,前端的最终用户必须选择自己的兴趣爱好(文化、体育、乐趣、food...there是其中的8个),其值从0到10不等。在后端(所有事件都是创建的),网站管理员可以为每个类别选择一个得分(文化、体育、fun...the与前端相同)。根据用户输入找出最相关结果的最佳算法是什么?我正在使用php (虽然我认为这不是一个特定于语言的问题)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-25 11:46:51

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

在SQL中,它可能是这样的:

代码语言:javascript
复制
SELECT ... FROM `events` WHERE ...  
ORDER BY (
    ABS(`culture` - $culture) 
    + ABS(`sports` - $sports) 
    + ABS(`fun` - $fun) 
    + ...
) ASC

您还可以根据用户配置文件中的分数分布对分数进行加权。这意味着如果用户拥有$culture = 10和所有其他分数为0,那么他对文化特别感兴趣,您可以通过以下方法获得更好的结果。

代码语言:javascript
复制
SELECT ... FROM `events` WHERE ...  
ORDER BY (
    (ABS(`culture` - $culture) * $cultureImportance)
    + (ABS(`sports` - $sports) * $sportsImportance)
    + (ABS(`fun` - $fun) * $funImportance)
    + ...
) ASC

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

你也可以添加“香料”的重要性价值,例如推动运动项目在超级碗期间,使您的网站更具有时代精神。

票数 6
EN

Stack Overflow用户

发布于 2011-01-25 11:48:05

我不知道algoritm,但您可以将用户的兴趣值与事件分数相乘,并将它们全部添加到每个事件中。这样您就可以为用户对事件进行排序。

例如,用户1 A:8 B:6 C:0

用户2 A:2 B:8 C:6

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

活动2 A:2 B:6 C:0

用户1事件列队活动1: 64活动2: 52

用户2活动列队活动2: 52活动1: 46

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4792193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档