-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAnalyzer.php
39 lines (32 loc) · 997 Bytes
/
Analyzer.php
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
<?php
/*
* This file is part of Pucene.
*
* (c) asapo.at
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Pucene\Analysis;
use Pucene\Analysis\CharacterFilter\CharacterFilterInterface;
use Pucene\Analysis\TokenFilter\TokenFilterInterface;
use Pucene\Analysis\Tokenizer\TokenizerInterface;
class Analyzer implements AnalyzerInterface
{
public function __construct(
protected CharacterFilterInterface $characterFilter,
protected TokenizerInterface $tokenizer,
protected TokenFilterInterface $tokenFilter
) {
}
public function analyze(string $fieldContent): array
{
$input = $this->characterFilter->filter($fieldContent);
$tokens = $this->tokenizer->tokenize($input);
$result = [];
foreach ($tokens as $token) {
$result = array_merge($result, $this->tokenFilter->filter($token));
}
return $result;
}
}