【发布时间】:2016-06-24 13:03:06
【问题描述】:
我在数据库中存储了很多内容项,并且我知道用户对哪些标签感兴趣。例如,爱丽丝对“医疗保健”、“体育”和“社交”等标签表现出兴趣。每个内容项包含一个或多个标签。我如何匹配这些以便向 Alice 推荐新内容?
考虑这些基本的数据库表:
CREATE TABLE `content_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) NOT NULL,
`tag_id` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
我有 Alice 的兴趣和一个(相关性)分数,就像权重一样:
array:3 [
'healthcare' => 2.20
'sports' => 1.30
'socal' => 0.5
]
你会如何处理这个问题?
有没有办法为此使用算法,例如余弦相似性,或者这仅适用于句子?
【问题讨论】:
-
到目前为止你尝试过什么?分数会作为结果排序的“权重”吗?
-
您可以查看 MySQL 的 FIELD 函数(用于基于兴趣评分的自定义排序)。它也应该在
ORDER BY中工作。 -
@MagnusEriksson
FIELD函数看起来很有前途。我会调查的。
标签: php sql tags comparison recommendation-engine