-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAnalysis.php
More file actions
86 lines (65 loc) · 2.37 KB
/
Analysis.php
File metadata and controls
86 lines (65 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
declare(strict_types = 1);
namespace Spameri\ElasticQuery\Mapping\Settings;
class Analysis implements \Spameri\ElasticQuery\Entity\ArrayInterface
{
private \Spameri\ElasticQuery\Mapping\Settings\Analysis\AnalyzerCollection $analyzer;
private \Spameri\ElasticQuery\Mapping\Settings\Analysis\TokenizerCollection $tokenizer;
private \Spameri\ElasticQuery\Mapping\Settings\Analysis\FilterCollection $filter;
public function __construct(
\Spameri\ElasticQuery\Mapping\Settings\Analysis\AnalyzerCollection|null $analyzer = null,
\Spameri\ElasticQuery\Mapping\Settings\Analysis\TokenizerCollection|null $tokenizer = null,
\Spameri\ElasticQuery\Mapping\Settings\Analysis\FilterCollection|null $filter = null,
)
{
if ($analyzer === null) {
$analyzer = new \Spameri\ElasticQuery\Mapping\Settings\Analysis\AnalyzerCollection();
}
if ($tokenizer === null) {
$tokenizer = new \Spameri\ElasticQuery\Mapping\Settings\Analysis\TokenizerCollection();
}
if ($filter === null) {
$filter = new \Spameri\ElasticQuery\Mapping\Settings\Analysis\FilterCollection();
}
$this->analyzer = $analyzer;
$this->tokenizer = $tokenizer;
$this->filter = $filter;
}
public function analyzer(): \Spameri\ElasticQuery\Mapping\Settings\Analysis\AnalyzerCollection
{
return $this->analyzer;
}
public function tokenizer(): \Spameri\ElasticQuery\Mapping\Settings\Analysis\TokenizerCollection
{
return $this->tokenizer;
}
public function filter(): \Spameri\ElasticQuery\Mapping\Settings\Analysis\FilterCollection
{
return $this->filter;
}
public function toArray(): array
{
$analyzerArray = [];
$tokenizerArray = [];
$filterArray = [];
/** @var \Spameri\ElasticQuery\Mapping\AnalyzerInterface $analyzer */
foreach ($this->analyzer as $analyzer) {
$analyzerArray[$analyzer->name()] = $analyzer->toArray()[$analyzer->name()];
}
/** @var \Spameri\ElasticQuery\Mapping\TokenizerInterface $tokenizer */
foreach ($this->tokenizer as $tokenizer) {
$tokenizerArray[$tokenizer->key()] = $tokenizer->toArray()[$tokenizer->key()];
}
/** @var \Spameri\ElasticQuery\Mapping\FilterInterface $filter */
foreach ($this->filter as $filter) {
if ($filter->toArray()) {
$filterArray[$filter->key()] = $filter->toArray()[$filter->key()];
}
}
return [
'analyzer' => $analyzerArray,
'tokenizer' => $tokenizerArray,
'filter' => $filterArray,
];
}
}