Я пытаюсь реализовать алгоритм Reddit в качестве опции сортировки в своем приложении, но я постоянно натыкаюсь на стены повсюду.
Я начал свою реализацию с этого (Сортировка mongodb по алгоритму ранжирования Reddit) в качестве ориентира.
Я попытался преобразовать его в С#; ниже моя попытка преобразования.
var map = new BsonJavaScript(
@"function() {
function hot(score, date){
var order = log10(Math.max(Math.abs(score), 1));
var sign = score>0 ? 1 : score<0 ? -1 : 0;
var seconds = epochSeconds(date) - 1134028003;
var product = order + sign * seconds / 45000;
return Math.round(product*10000000)/10000000;
}
function log10(val){
return Math.log(val) / Math.LN10;
}
function epochSeconds(d){
return (d.getTime() - new Date(1970,1,1).getTime())/1000;
}
emit( hot(this.VoteCount, this.CreatedAt), this );
}"
);
var reduce = new BsonJavaScript(
@"function(){}"
);
var finalize = new BsonJavaScript(
@"{ 'out': { 'inline': 1 } }"
);
return db.Posts.MapReduce(new MapReduceArgs { MapFunction = map, ReduceFunction = reduce, FinalizeFunction = finalize }).GetResults();
Он - результаты, которые я получаю от реализации;
Он фактический набор данных.
По какой-то причине функция возвращает 2 объекта вместо 4. Кроме того, что мне нужно изменить, чтобы функция возвращала весь объект сообщения вместе с вычисленной оценкой?
Был бы очень признателен, если бы кто-нибудь помог мне :)
Заранее спасибо, Жан