如果项目已经在另一个类别中出现更高,则将其排名较低的算法

问题描述

我正在开发一个 UI,它有一堆标题分组在多个类别下(比方说电影列表)。假设我有类别 1、类别 2、类别 3 等,每个类别下有 20 部电影。问题是有些电影在多个类别中重复出现,如果它们出现在多个类别的前 5 名中,那么它在 UI 中看起来很糟糕,因为它看起来是重复的。这种分类的来源不在我的控制范围内,我只是从另一个服务接收这些数据。我的要求是寻找跨类别的重复项,如果电影已经出现在更高排名(基于显示顺序)的类别中,则对其进行处罚并将其在类别中排名靠后。例如,Movie1 出现在 Category1 中的 Rank2。 Movie1 也出现在 Category2 的 Rank4 中。我想将 Movie1 移动到类别 2 中更低的排名(比如排名 15 或排名 20),因为它已经出现在前一个类别中的更高排名。

Problem:
--------

Category1:
1. Movie1
2. Movie2
3. Movie3
...

Category2:
1. Movie1
2. Movie4
3. Movie5
...

Category3:
1. Movie4
2. Movie6
3. Movie7
...

在上述情况下,我想将类别 2 中的电影 1 排到第 10 位或以下,因为它已经出现在类别 1 中的相同或更高级别。同样,我想将第 3 类中的 Movie4 排名下降,因为它出现在更高等级的更高类别中。

我正在考虑为类别分配权重(按降序),然后根据排名+权重计算每部电影的得分,然后使用它对重复的电影进行排名。我不是算法、排名等方面的专家,但我觉得这将是一个常见的用例,并且可能已经有解决此类排名问题的方法。有人可以在这里指导我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...