Compound::boosting()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 3
dl 0
loc 7
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Triadev\Es\Dsl\Dsl\Query;
3
4
use ONGR\ElasticsearchDSL\BuilderInterface;
5
use ONGR\ElasticsearchDSL\Query\Compound\BoostingQuery;
6
use ONGR\ElasticsearchDSL\Query\Compound\ConstantScoreQuery;
7
use ONGR\ElasticsearchDSL\Query\Compound\DisMaxQuery;
8
use Triadev\Es\Dsl\Dsl\AbstractDsl;
9
use Triadev\Es\Dsl\Dsl\FunctionScore;
10
use Triadev\Es\Dsl\Facade\ElasticDsl;
11
12
class Compound extends AbstractDsl
13
{
14
    /**
15
     * Function score
16
     *
17
     * @param \Closure $search
18
     * @param \Closure $functionScore
19
     * @param array $params
20
     * @return Compound
21
     */
22 6
    public function functionScore(\Closure $search, \Closure $functionScore, array $params = []) : Compound
23
    {
24 6
        $searchBuilder = ElasticDsl::search();
25 6
        $search($searchBuilder);
26
        
27 6
        $functionScoreBuilder = new FunctionScore($searchBuilder->getQuery(), $params);
28 6
        $functionScore($functionScoreBuilder);
29
        
30 6
        $this->append($functionScoreBuilder->getQuery());
31 6
        return $this;
32
    }
33
    
34
    /**
35
     * Constant score
36
     *
37
     * @param \Closure $search
38
     * @param array $params
39
     * @return Compound
40
     */
41 1
    public function constantScore(\Closure $search, array $params = []) : Compound
42
    {
43 1
        $searchBuilder = ElasticDsl::search();
44 1
        $search($searchBuilder);
45
        
46 1
        $this->append(new ConstantScoreQuery($searchBuilder->getQuery(), $params));
47 1
        return $this;
48
    }
49
    
50
    /**
51
     * Boosting
52
     *
53
     * @param BuilderInterface $positive
54
     * @param BuilderInterface $negative
55
     * @param float $negativeBoost
56
     * @return Compound
57
     */
58 1
    public function boosting(
59
        BuilderInterface $positive,
60
        BuilderInterface $negative,
61
        float $negativeBoost
62
    ) : Compound {
63 1
        $this->append(new BoostingQuery($positive, $negative, $negativeBoost));
64 1
        return $this;
65
    }
66
    
67
    /**
68
     * Dis max
69
     *
70
     * @param BuilderInterface[] $queries
71
     * @param array $params
72
     * @return Compound
73
     */
74 1
    public function disMax(array $queries, array $params = []) : Compound
75
    {
76 1
        $disMaxQuery = new DisMaxQuery($params);
77
        
78 1
        foreach ($queries as $query) {
79 1
            if ($query instanceof BuilderInterface) {
80 1
                $disMaxQuery->addQuery($query);
81
            }
82
        }
83
        
84 1
        $this->append($disMaxQuery);
85 1
        return $this;
86
    }
87
}
88