我在电影推荐引擎工作,我面临着数据库设计问题。 我实际的数据库看起来是这样的:电影推荐引擎概念数据库设计
MOVIES [ID,TITLE]
KEYWORDS_TABLE [ID,KEY_ID]
- 其中,ID是MOVIES.id外键和KEY_ID是一个文字中的关键词表
这是不是整个数据库的关键,但我在这里展示了对我的问题重要的一点。 我有大约50,000部电影和大约1,3千万个关键字相关性,基本上我的算法包括提取所有与给定电影具有相同关键字的人,然后按照关键字相关数排序。
例如我找了类似的“投射走”了一部电影,它返回“六天六夜”,因为它有最多关键字的相关性(4个关键词):
Island
Airplane crash
Stranded
Pilot
该算法是基于在更多的因素上,但这是最重要和最困难的方法。
基本上我现在所做的是获得至少有一个关键字与给定电影相似的所有电影,然后通过其他一些暂时不重要的因素对它们进行排序。
如果没有那么多的记录,就不会有任何问题,查询在许多情况下持续高达10-20秒,其中一些甚至超过5000电影。 有人已经帮我在这里(感谢马克·拜尔斯)以优化查询,但因为时间过长
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
所以,我认为这将是更好,如果我与电影的建议,预先制作的这些名单是不够的每部电影,但我不知道如何设计表格。不管是一个好主意,或者你会如何采取这种方法?
神经网络不一定更好。神经网络是不透明的,所以如果你的模型成功了,你将不知道为什么 - 如果它不成功,你将无法改进它。 – isomorphismes 2011-03-05 05:54:41