Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 8 |
CrossProjectBlockScorer | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 8 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
score | n/a |
0 / 0 |
1 | n/a |
0 / 0 |
|||||
reorder | |
0.00% |
0 / 1 |
12 | |
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; | |
} | |
} |