Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ScriptScoreFunctionScoreBuilder
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 append
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace CirrusSearch\Search\Rescore;
4
5use CirrusSearch\SearchConfig;
6use Elastica\Query\FunctionScore;
7
8/**
9 * A function score that builds a script_score.
10 * see: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-script-score
11 * NOTE: only lucene expression script engine is supported.
12 */
13class ScriptScoreFunctionScoreBuilder extends FunctionScoreBuilder {
14    /**
15     * @var string the script
16     */
17    private $script;
18
19    /**
20     * @param SearchConfig $config
21     * @param float $weight
22     * @param string $script
23     */
24    public function __construct( SearchConfig $config, $weight, $script ) {
25        parent::__construct( $config, $weight );
26        $this->script = $script;
27    }
28
29    public function append( FunctionScore $functionScore ) {
30        $functionScore->addScriptScoreFunction( new \Elastica\Script\Script( $this->script, null,
31            'expression' ), null, $this->weight );
32    }
33}