首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建基于用户兴趣的推荐算法

创建基于用户兴趣的推荐算法
EN

Stack Overflow用户
提问于 2012-10-09 15:29:33
回答 4查看 678关注 0票数 1

我目前正在构建一个应用程序,可以根据他们的标签推荐网站。

在我的网站上,当用户注册时,它会填写一个兴趣。所以这是一个样本兴趣:

代码语言:javascript
复制
football, model trains, hockey

所以用逗号隔开。因此,当用户单击注册时,它将保存在我的数据库中。这是我的数据库的设计。

代码语言:javascript
复制
userID |  name     | interest
001    | John Doe  | sports, model trains, hockey

因此,另一方面,我的网站中也有用户上传网站URL,并创建与之相关的标签。这是我为此而设计的数据库:

代码语言:javascript
复制
    postID  |  title           | tags
     001    |  techcrunch.com  | technology,softwares,startups
     002    |  nba.com         | basketball,sports,all-star
     003    |  tmz.com         | gossip, showbiz

所以这篇文章的逻辑是,我想向用户John Doe推荐NBA.com,因为NBA.com有一个运动标签,John Doe的兴趣也有一个体育标签。

你知道怎么做吗?只是一个后续问题,数据库设计是否正确,或者我是否应该创建一个新表来存储所有标签。类似的东西(虽然不确定)。

我们将非常感谢您的帮助,并将给予您回报!提前感谢!:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-09 15:35:43

我会对数据库进行规范化,这样您就可以在单独的表和关系表中拥有与其连接的标记。因此:

用户表:

代码语言:javascript
复制
UserId Name
001    John Does

TagUserRelation

代码语言:javascript
复制
UserId TagId
001     001

标签表:

代码语言:javascript
复制
TagId TagName
001   Sports

TagUrlRelation

代码语言:javascript
复制
TagId Url
001   nba.com
001   nhl.com

为了提高性能,我会继续使用必要的连接创建索引视图,并实现存储过程来使用它们。

如上所述,另一种选择是全文搜索,但这会慢得多,而且在这种情况下通常不会被认为是好的数据库设计。

票数 2
EN

Stack Overflow用户

发布于 2012-10-09 15:34:43

这可以通过使用full text search来完成

refer here

票数 1
EN

Stack Overflow用户

发布于 2012-10-09 15:35:22

您应该创建两个单独的表,其中包含单个标记,每个人或每个帖子都有多个标记。如果愿意,您可以为它创建一个多列主键。

代码语言:javascript
复制
userID | interest
001    | sports
001    | model trains
001    | hockey
...

对帖子也是如此:

代码语言:javascript
复制
postID | tags
003    | gossip
003    | showbiz
...

这极大地提高了您编写高效SQL的机会。

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

https://stackoverflow.com/questions/12794943

复制
相关文章

相似问题

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