|
18 | 18 | use Elastica\QueryBuilder;
|
19 | 19 | use MonsieurBiz\SyliusSearchPlugin\Repository\ProductAttributeRepositoryInterface;
|
20 | 20 | use MonsieurBiz\SyliusSearchPlugin\Repository\ProductOptionRepositoryInterface;
|
21 |
| -use MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\QueryFilterInterface; |
| 21 | +use MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\SearchTermFilter as BaseSearchTermFilter; |
22 | 22 | use MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestConfiguration;
|
23 | 23 |
|
24 |
| -final class SearchTermFilter implements QueryFilterInterface |
| 24 | +final class SearchTermFilter extends BaseSearchTermFilter |
25 | 25 | {
|
26 | 26 | private ProductAttributeRepositoryInterface $productAttributeRepository;
|
27 | 27 |
|
28 | 28 | private ProductOptionRepositoryInterface $productOptionRepository;
|
29 | 29 |
|
30 |
| - private array $fieldsToSearch; |
31 |
| - |
32 | 30 | public function __construct(
|
33 | 31 | ProductAttributeRepositoryInterface $productAttributeRepository,
|
34 | 32 | ProductOptionRepositoryInterface $productOptionRepository,
|
35 | 33 | array $fieldsToSearch
|
36 | 34 | ) {
|
| 35 | + parent::__construct($fieldsToSearch); |
37 | 36 | $this->productAttributeRepository = $productAttributeRepository;
|
38 | 37 | $this->productOptionRepository = $productOptionRepository;
|
39 |
| - $this->fieldsToSearch = $fieldsToSearch; |
40 | 38 | }
|
41 | 39 |
|
42 |
| - public function apply(BoolQuery $boolQuery, RequestConfiguration $requestConfiguration): void |
| 40 | + protected function addCustomFilters(BoolQuery $searchQuery, RequestConfiguration $requestConfiguration): void |
43 | 41 | {
|
44 |
| - $qb = new QueryBuilder(); |
45 |
| - |
46 |
| - $searchCode = $qb->query()->term(['code' => $requestConfiguration->getQueryText()]); |
47 |
| - |
48 |
| - $searchQuery = $qb->query()->bool(); |
49 |
| - $searchQuery->addShould($searchCode); |
50 |
| - $this->addFieldsToSearchCondition($searchQuery, $requestConfiguration); |
51 |
| - |
52 | 42 | $this->addAttributesQueries($searchQuery, $requestConfiguration);
|
53 | 43 | $this->addOptionsQueries($searchQuery, $requestConfiguration);
|
54 |
| - |
55 |
| - $boolQuery->addMust($searchQuery); |
56 |
| - } |
57 |
| - |
58 |
| - private function addFieldsToSearchCondition(BoolQuery $searchQuery, RequestConfiguration $requestConfiguration): void |
59 |
| - { |
60 |
| - if (0 === \count($this->fieldsToSearch)) { |
61 |
| - return; |
62 |
| - } |
63 |
| - $qb = new QueryBuilder(); |
64 |
| - $nameAndDescriptionQuery = $qb->query()->multi_match(); |
65 |
| - $nameAndDescriptionQuery->setFields($this->fieldsToSearch); |
66 |
| - $nameAndDescriptionQuery->setQuery($requestConfiguration->getQueryText()); |
67 |
| - $nameAndDescriptionQuery->setType(MultiMatch::TYPE_MOST_FIELDS); |
68 |
| - $nameAndDescriptionQuery->setFuzziness(MultiMatch::FUZZINESS_AUTO); |
69 |
| - $searchQuery->addShould($nameAndDescriptionQuery); |
70 | 44 | }
|
71 | 45 |
|
72 | 46 | private function addAttributesQueries(BoolQuery $searchQuery, RequestConfiguration $requestConfiguration): void
|
|
0 commit comments