Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 8
CrossProjectBlockScorer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 8
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 score
n/a
0 / 0
1
n/a
0 / 0
 reorder
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 7
<?php
namespace CirrusSearch\Search;
/**
 * Score an interwiki block
 */
abstract class CrossProjectBlockScorer {
    public function __construct( array $settings ) {
    }
    /**
     * Compute a score for a given bloack of crossproject searchresults
     * @param string $prefix
     * @param CirrusSearchResultSet $results
     * @return float the score for this block
     */
    abstract public function score( $prefix, CirrusSearchResultSet $results );
    /**
     * Reorder crossproject blocks using the $scorer
     * @param array $resultsets array of ResultSet or empty array if the search was disabled
     * @return array ResultSet reordered
     */
    public function reorder( array $resultsets ) {
        $sortKeys = [];
        foreach ( $resultsets as $pref => $results ) {
            if ( $results instanceof CirrusSearchResultSet ) {
                $sortKeys[] = $this->score( $pref, $results );
            } else {
                $sortKeys[] = -1.0;
            }
        }
        array_multisort( $sortKeys, SORT_DESC, $resultsets );
        return $resultsets;
    }
}