优先级评分算法

时间:2015-12-15 02:33:21

标签: algorithm sorting scoring

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

修改:更多信息

我正在开发一个nodejs应用程序来强制执行政府官员的政治责任,该应用程序的核心允许用户评论(要么承认或批评)公职人员,但我不想让用户诽谤等等因此,如果你声称公职人员已经做了一些声称必须经过审查的事情,经审查的评论应该比正常评论更高,但正常评论应该能够超过审查的评论最终

修改:更多信息

模式

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}
    }
});

虚拟方法,返回用于排序的分数

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);
});

因此,在经过审查的评论上制作喜欢数量为双倍

1 个答案:

答案 0 :(得分:1)

创建一个帖子值并按其排序:

postValue = likes + (isVetted ? 10 : 0)

这使得"审查"值得10个人喜欢。换句话说,如果10个人喜欢没有经过审查的东西,那么它将被等同于0个喜欢的东西。

如果您想按日期排序,那么只需按日期对所有经审核的评论和所有评论排序超过10个,并按日期排序所有其他评论。