The result of the rank aggregation process is an aggregate list that is stored in a MergedList object. MergedList contains a collection of MergedItems, typically sorted in decreasing score order. The score is assigned by a rank aggregation method.

Regarding the evaluation, the generated aggregate list is fed to the evaluate() function of an Evaluator. The results are written in a CSV file according to this document.

Implementation files
The MergedList class is defined in the src/MergedList.h header file; its member functions are implemented in src/MergedList.cpp. The implementations of the supported rank aggregation methods are stored in the ram directory. More specifically:

For more details, please visit the Publications page, or follow the links in the Introduction page. A guide on how custom rank aggregation implementations can be integrated to FLAGR is given here.

Technical Details
The elements of MergedList are organized in two ways. More specifically:

  • A hash table (hash_table member variable) with linked lists as chains (for collision resolution) is employed to support fast fusion of the individual InputLists. The contents of this hash table are MergedItem objects; the search keys are the unique identifiers of the associated InputItems (MergedItem inherits the members of InputItem).
  • A typical array of MergedItem pointers (item_list member variable) that is used to sort the objects in decreasing score order.

The following interactive block diagram depicts the functionality of the MergedList class inside the entire architecture of FLAGR.

FLAGR architecture