Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CompositeCrossProjectBlockScorer
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
6
 score
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace CirrusSearch\Search;
4
5/**
6 * Composite, weighted sum of a list of subscorers
7 */
8class CompositeCrossProjectBlockScorer extends CrossProjectBlockScorer {
9    private $scorers = [];
10
11    public function __construct( array $settings ) {
12        parent::__construct( $settings );
13        foreach ( $settings as $type => $subSettings ) {
14            $weight = $subSettings['weight'] ?? 1;
15            $scorerSettings = $subSettings['settings'] ?? [];
16            $scorer = CrossProjectBlockScorerFactory::loadScorer( $type, $scorerSettings );
17            $this->scorers[] = [
18                'weight' => $weight,
19                'scorer' => $scorer,
20            ];
21        }
22    }
23
24    /**
25     * @param string $prefix
26     * @param CirrusSearchResultSet $results
27     * @return float
28     */
29    public function score( $prefix, CirrusSearchResultSet $results ) {
30        $score = 0;
31        foreach ( $this->scorers as $scorer ) {
32            $score += $scorer['weight'] * $scorer['scorer']->score( $prefix, $results );
33        }
34        return $score;
35    }
36}