在sql查询中调用用户定义的函数

时间:2014-04-12 03:20:42

标签: php mysql sql function video

我正在编写视频搜索引擎。对于每个视频,我都存储了一些标签(如教程,初学者,电影,错误等)。由于我们一般可以从用户查询中提取关键词,我创建了一个包含(关键词,标签,概率)的数据库

例如:如果数据库条目是

key word  |   tag  |   probability

how to    | errors |    0.7

这意味着如果用户查询中存在关键词“如何”,则用户搜索带有“错误”标签的视频的可能性为70%。

可以从用户的查询中提取多个关键字。所以,我将它们存储在一个数组中。

在视频数据库中,对于每个视频,我存储了2个属性(video_name,tag,relevant) 相关性状态“视频与标签的相关性”。 视频可以包含多个标签。因此,如果视频有4个标签,则视频数据库中将有4个条目具有不同的标签和相关性。

最后,我想要一个sql查询,它返回相关性的总和*视频的所有标签的概率。 例如: 如果提取的标签是 电影 - 0.6概率和歌曲 - 0.8概率

如果视频数据库是

video_name | tag     | relevance

  A        |  movies |   50

  B        |  errors |   100

  A        |  songs  |   100

  C        |  tutorial|  10

  A        |  comedy  |  200

然后我的结果必须是  A - 100(50 * 0.6 + 100 * 0.8)

B - 0(因为找不到标签,所以为0)

C - 0(因为找不到标签,所以为0)

我是sql的新手。你能否为此提出一个SQL查询......先谢谢....

1 个答案:

答案 0 :(得分:0)

假设您的关键字表名为keywords,而您的相关性表格为relevances,则此类内容应该有效:

SELECT video_name, sum(r.relevance * k.probablility)
FROM relevances r, keywords k
WHERE r.tag = k.tag
GROUP BY video_name
ORDER BY video_name

对于没有标签的视频,它应该返回NULL(而不是0)。

相关问题