rank

Factor based ranking system

rAnk

var rAnk = require('rAnk');

Сначала нужно добавить факторы в систему

rAnk.factor('./some/path');            // подгружается указанный файл и из него извлекаются факторы
rAnk.factor(f1, f2, f3);               // факторы через запятую
rAnk.factor([f1, f2, f3]);             // массив факторов
rAnk.factor('fname')                   // возвращает уже добавленные фактор по имени

Затем объявить формулу и указать, какие факторы она будет использовать

rAnk.formula('forname', [facname1, facname2, facname3]);

Затем формулу можно использовать

var sorted = rAnk.run('forname', data, conditions);

Факторы принимают на вход массив с данными и объект с условиями. Бывает три типа фаторов:

  • фильтрующий — возвращает урезанный массив с данными
  • сортирующий — сортирует входные данные исходя из условий
  • бинарыный — для каждого элемента из массива с данными возвращает либо 1 либо 0

Сортирующий и бинарный факторы должны возвращать ответ в следующем виде:

// всего в массиве 5 элементов
[3,4,2,1,0]     // сортирующий
[0,0,4,4,0]     // бинарный

для этого есть специальных хелпер:

Factor.distribution(original, sorted, id);
// original — оригинальный массив
// sorted — отсортированный или отфильтрованный массив
// id — имя уникального для каждого элемента массива ключа или функция для его вычисления

Создание фатора:

var Factor = require('rAnk').Factor;

Factor.create({
    name: 'facname',                        // обязательный параметр
    type: F_BINARY                          // || F_FILTER
    exec: function(data, conditions) {}     // вычисление фактора
});