gpt4 book ai didi

mysql - 电影推荐引擎概念数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:48 26 4
gpt4 key购买 nike

我在电影推荐引擎工作,我正面临数据库设计问题。我的实际数据库如下所示:

MOVIES [ID,TITLE] 
KEYWORDS_TABLE [ID,KEY_ID]
  • 其中 ID 是 MOVIES.id 的外键,KEY_ID 是文本关键字表的键

这不是整个数据库,但我在这里展示了对我的问题重要的部分。我有大约 50,000 部电影和大约 130 万个关键词相关性,基本上我的算法包括提取所有与给定电影具有相同关键词的人,然后按关键词相关性的数量对它们进行排序。

例如,我查找了一部类似于“Cast away”的电影,结果返回了“Six days and six nights”,因为它具有最多的关键字相关性(4 个关键字):

Island
Airplane crash
Stranded
Pilot

该算法基于更多的因素,但这个是最重要的,也是该方法最难的。

基本上我现在所做的是获取所有至少有一个关键字与给定电影相似的电影,然后根据暂时不重要的其他因素对它们进行排序。

如果没有那么多记录就不会有任何问题,在许多情况下查询持续长达 10-20 秒,其中一些甚至返回超过 5000 部电影。已经有人在这里帮助我(感谢 Mark Byers)优化了查询,但这还不够,因为它花费的时间太长了

SELECT DISTINCT M.title
FROM keywords_table K1
JOIN keywords_table K2
ON K2.key_id = K1.key_id
JOIN movies M
ON K2.id = M.id
WHERE K1.id = 4

所以我认为如果我预先制作这些列表并为每部电影推荐电影会更好,但我不确定如何设计表格..这是一个好主意还是你会如何采用这种方法?

最佳答案

@Supyxy 一种更好的电影推荐方法是使用基于分析电影数据库后生成的抽象特征的神经网络方法(生成这些特征的因素可以是关键字|人们的评分|导演姓名| Actor 等)。Filmaster 提供了一个示例开源电影推荐引擎。项目。您可以在维基上阅读:http://filmaster.org/display/DEV/New+recommendation+engine并从 bitbucket 存储库中获取代码:http://bitbucket.org/filmaster/filmaster-test/src/tip/count_recommendations.cpp

但是回答你在当前解决方案中遇到的问题,如果进一步的查询优化失败,我会在数据中添加更多冗余,为每部电影存储对相似电影的引用(计算可以懒惰地完成或每天在 cron 作业中作为这些值不应经常更改)。

关于mysql - 电影推荐引擎概念数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com