优先评分算法

Priority scoring algorithm

我正在尝试找到一种算法,允许我将经过审查的评论排名高于未经验证的评论,比如有人发表评论说大海是红色的,直到管理员验证该信息并将其标记为已审查评论应该比经过审查的评论排名低,但在我看来应该有某种门槛说在 x 很多人喜欢之后这个未经审查的评论应该比经过审查的评论排名更高

编辑:更多信息

我正在开发一个 nodejs 应用程序来对政府官员实施政治责任,该应用程序的核心允许用户评论(承认或批评)public 官员,但我不想让用户诽谤之类的,因此如果你声称public官员做了一些声称必须经过审查的事情,经过审查的评论应该比正常评论得分更高,但正常评论最终应该能够超过经过审查的评论

编辑:更多信息

架构

var CommentSchema = new mongoose.Schema({
    text: String,
    vetted: {type:Boolean, default:false},
    published: {type:Boolean, default:true},
    pubDate: {type:Date, default:}
    user: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    official: {type: mongoose.Schema.Types.ObjectId, ref: 'Official'},
    in_reply: {type: mongoose.Schema.Types.ObjectId, ref: 'Comment'},
    meta: {
        upVotes: {type:Number, default:0},
        downVotes: {type:Number, default:0}
    }
});

虚拟方法,其中returns用于排序的分数

CommentSchema.virtual('voteCount').get(function(){
    return this.meta.upVotes - this.meta.downVotes;
});

根据@Daniel 提供的答案,我实施了以下解决方案

CommentSchema.virtual('voteCount').get(function(){
    return (this.vetted ? this.meta.upVotes:0)+(this.meta.upVotes - this.meta.downVotes);
});

因此,对经过审查的评论点赞的次数加倍

创建一个 post 值并按它排序:

postValue = likes + (isVetted ? 10 : 0)

这使得 "vetting" 值得 10 个赞。换句话说,如果有10个人点赞了未审核的内容,那么它的排名将等同于审核后0人点赞的内容。

如果您想改为按日期排序,则只需按日期对所有已审核评论和所有点赞次数超过 10 次的评论进行排序,然后按日期对所有其他评论进行排序。