当前位置: 首页 > 面试题库 >

如何基于标签获取相似的对象

曹凯泽
2023-03-14
问题内容

我有三个这样的表:

  • 电影:身份证,姓名

  • 标签:ID,名称,值

  • 已标记:id,电影(FK),标签(FK)

因此,每部电影都有自己的标签集。我需要的是基于标签集检索相似的电影。我想说10部按匹配标签计数排序的电影。

如果我创建如下所示的视图,它将使MySQL消失。“标记”表和“标记”表中都有超过30k条记录。

create view relatedtags as

select
    entityLeft.id as id,
    entityRight.id as rightId,
    count(rightTagged.id) as matches

from
    entity as entityLeft join tagged as leftTagged on leftTagged.entity = entityLeft.id, 
    entity as entityRight join tagged as rightTagged on rightTagged.entity = entityRight.id

where leftTagged.tag = rightTagged.tag
and entityLeft.id != entityRight.id
group by entityLeft.id, entityRight.id

问题答案:

这将返回所有电影的列表,这些电影<current_movie_id>通过减少共同的标签数量来与给定顺序共享至少1个标签

SELECT movie.*, count(DISTINCT similar.tag) as shared_tags FROM movie INNER JOIN 
    ( tagged AS this_movie INNER JOIN tagged AS similar USING (tag) )
    ON similar.movie = movie.id
WHERE this_movie.movie=<current_movie_id>
AND   movie.id != this_movie.movie
GROUP BY movie.id
ORDER BY shared_tags DESC

希望能给您一些帮助



 类似资料:
  • 假设我在一个页面上有3个文本框,定义如下。 我将把值“Open”作为参数传递给JSoup,JSoup应该返回如下数据(这是中间文本框的详细信息)。 JSoup能做到吗? 谢谢您 -阿努普

  • 问题内容: 我正在使用object标签在html页面中加载html代码段。 我的代码遵循以下原则: 如预期的那样,页面加载后,在对象标记之间添加了一些元素。我想获取这些元素,但似乎无法访问它们。 我尝试了以下 这些似乎都不起作用。有没有其他方法可以获取这些元素? 编辑: 更详细的示例: 考虑这个 如果我尝试在对象中获取html,则会得到一个空字符串。 问题答案: 只要将其放在同一域上,就可以执行以

  • 问题内容: 标签 帖子 我们如何能够得到一个包含价值POST_ID = 1和2 ,并在同一POST_ID? 所以结果是 剂量显示,因为标签的post_id = 4中没有值。 不显示要求 问题答案: 尝试多次: 看到这个SQLFiddle 您也可以像这样连接两个表:

  • 我正在使用OneSignal向我的Android应用程序中的用户发送通知。目前,我可以使用idsAvailable()获取playerID/deviceID,并向该用户发送通知。

  • 父类: 子电话对象(第一级): 我正在尝试获取person对象,其phone对象类型为home,其编号应包含“888”。 从上面的流代码,我能够得到手机对象。但是如何在相同的函数中获得该电话对象的父对象呢?。 我尝试了这种方式,我得到null不匹配的对象。

  • 问题内容: 我在Android应用程序中向用户显示图像。 我希望能够告诉他们“触摸”图像的位置。 我可以通过实现OnTouchListener轻松获取屏幕坐标 但是,这些是绝对坐标。我真正需要的是一个将其转换为相对于View的坐标的函数。 我做了一些挖掘工作,但是除了尝试自己实现ScreenToClient方法之外,我似乎什么也没做。 有谁知道一个好的解决方案,还是我只需要自己动手? 似乎可以使用