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    /** @var array[] */
10    private $scorers = [];
11
12    public function __construct( array $settings ) {
13        parent::__construct( $settings );
14        foreach ( $settings as $type => $subSettings ) {
15            $weight = $subSettings['weight'] ?? 1;
16            $scorerSettings = $subSettings['settings'] ?? [];
17            $scorer = CrossProjectBlockScorerFactory::loadScorer( $type, $scorerSettings );
18            $this->scorers[] = [
19                'weight' => $weight,
20                'scorer' => $scorer,
21            ];
22        }
23    }
24
25    /**
26     * @param string $prefix
27     * @param CirrusSearchResultSet $results
28     * @return float
29     */
30    public function score( $prefix, CirrusSearchResultSet $results ) {
31        $score = 0;
32        foreach ( $this->scorers as $scorer ) {
33            $score += $scorer['weight'] * $scorer['scorer']->score( $prefix, $results );
34        }
35        return $score;
36    }
37}