Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Builder.php
Go to the documentation of this file.
1 <?php
7 
8 use Magento\Framework\Locale\Resolver as LocaleResolver;
10 
11 class Builder implements BuilderInterface
12 {
16  protected $localeResolver;
17 
21  protected $esConfig;
22 
28  protected $storeId;
29 
34  public function __construct(
35  LocaleResolver $localeResolver,
37  ) {
38  $this->localeResolver = $localeResolver;
39  $this->esConfig = $esConfig;
40  }
41 
45  public function build()
46  {
47  $tokenizer = $this->getTokenizer();
48  $filter = $this->getFilter();
49  $charFilter = $this->getCharFilter();
50 
51  $settings = [
52  'analysis' => [
53  'analyzer' => [
54  'default' => [
55  'type' => 'custom',
56  'tokenizer' => key($tokenizer),
57  'filter' => array_merge(
58  ['lowercase', 'keyword_repeat'],
59  array_keys($filter)
60  ),
61  'char_filter' => array_keys($charFilter)
62  ]
63  ],
64  'tokenizer' => $tokenizer,
65  'filter' => $filter,
66  'char_filter' => $charFilter,
67  ],
68  ];
69 
70  return $settings;
71  }
72 
76  public function setStoreId($storeId)
77  {
78  $this->storeId = $storeId;
79  }
80 
84  protected function getTokenizer()
85  {
86  $tokenizer = [
87  'default_tokenizer' => [
88  'type' => 'standard',
89  ],
90  ];
91  return $tokenizer;
92  }
93 
97  protected function getFilter()
98  {
99  $filter = [
100  'default_stemmer' => $this->getStemmerConfig(),
101  'unique_stem' => [
102  'type' => 'unique',
103  'only_on_same_position' => true
104  ]
105  ];
106  return $filter;
107  }
108 
112  protected function getCharFilter()
113  {
114  $charFilter = [
115  'default_char_filter' => [
116  'type' => 'html_strip',
117  ],
118  ];
119  return $charFilter;
120  }
121 
125  protected function getStemmerConfig()
126  {
127  $stemmerInfo = $this->esConfig->getStemmerInfo();
128  $this->localeResolver->emulate($this->storeId);
129  $locale = $this->localeResolver->getLocale();
130  if (isset($stemmerInfo[$locale])) {
131  return [
132  'type' => $stemmerInfo['type'],
133  'language' => $stemmerInfo[$locale],
134  ];
135  }
136  return [
137  'type' => $stemmerInfo['type'],
138  'language' => $stemmerInfo['default'],
139  ];
140  }
141 }
__construct(LocaleResolver $localeResolver, EsConfigInterface $esConfig)
Definition: Builder.php:34
$settings
Definition: bootstrap.php:29