所以我认为这是一个非常独特的问题。我需要计算一个非常大的项目表(200,000 左右)的排名。他们的“排名”基于几个加在一起的加权属性。 1-4 等级上的 7 个属性(基于其四分位数 1 底部四分位数 4 顶部),每个属性最初均等加权,然后加在一起(7-28 等级)。我想允许用户调整属性的权重,使任何或全部属性的重要性加倍或减半。这可能会改变他们的最终排名。 我想看看是否有人处理过类似的问题或有任何从哪里开始的想法。谢谢!
最佳答案
作为基本设计,我会尝试使您的原始项目及其默认排名不可变。
然后,您在 cron 上运行脚本,以计算它们在某个时间间隔内的排名。这将通过您选择的某种算法来完成,但仅作为示例:
假设一个项目具有以下属性 {“一些零售列表”:{ “id”:“1”, “价格”:“100000.12”, “城市”:“纽约市”, “房间”:“4”, ... “排名城市”:4, “排名价格”:3, “排名质量”:3 } 脚本第一次运行时,其总排名为 20/30
现在,一个用户出现并添加他的输入,然后您将他的提交保存在单独的存储桶中(或使用同一存储桶中的类型): { “类型”:“用户排名” “uid”:3121, “属性ID”:1 “排名城市”:3, "等级价格": 1, “排名质量”:3 } 当您的脚本运行时,您可能希望 50% 的排名来自用户,50% 来自默认排名。因此,您可以将所有用户结果相加,得到平均用户分数,然后与您的分数合并,然后做任何您想做的事情。
您需要保存最终结果 { "type": "userPropertyRank", “属性ID”:1 “排名城市”:3, “排名价格”:3, “排名质量”:3 }
关于mysql - 数据库项目排名可移动权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301606/