Skip to content

Commit 39ed32e

Browse files
committed
ACP2E-752: [Magento Cloud][Premier Support] Incorrect search results with Thai language
1 parent 96faea7 commit 39ed32e

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

app/code/Magento/Elasticsearch/Model/Adapter/Index/Builder.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Magento\Framework\Locale\Resolver as LocaleResolver;
1010
use Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfigInterface;
1111
use Magento\Search\Model\ResourceModel\SynonymReader;
12+
use Magento\Store\Model\StoreManagerInterface;
1213

1314
/**
1415
* Index Builder
@@ -18,38 +19,46 @@ class Builder implements BuilderInterface
1819
/**
1920
* @var LocaleResolver
2021
*/
21-
protected $localeResolver;
22+
private $localeResolver;
2223

2324
/**
2425
* @var EsConfigInterface
2526
*/
26-
protected $esConfig;
27+
private $esConfig;
2728

2829
/**
2930
* Current store ID.
3031
*
3132
* @var int
3233
*/
33-
protected $storeId;
34+
private $storeId;
3435

3536
/**
3637
* @var SynonymReader
3738
*/
3839
private $synonymReader;
3940

41+
/**
42+
* @var StoreManagerInterface
43+
*/
44+
private $storeManager;
45+
4046
/**
4147
* @param LocaleResolver $localeResolver
4248
* @param EsConfigInterface $esConfig
4349
* @param SynonymReader $synonymReader
50+
* @param StoreManagerInterface $storeManager
4451
*/
4552
public function __construct(
4653
LocaleResolver $localeResolver,
4754
EsConfigInterface $esConfig,
48-
SynonymReader $synonymReader
55+
SynonymReader $synonymReader,
56+
StoreManagerInterface $storeManager
4957
) {
5058
$this->localeResolver = $localeResolver;
5159
$this->esConfig = $esConfig;
5260
$this->synonymReader = $synonymReader;
61+
$this->storeManager = $storeManager;
5362
}
5463

5564
/**
@@ -195,6 +204,8 @@ protected function getStemmerConfig()
195204
*/
196205
private function getSynonymFilter(): array
197206
{
207+
$this->storeManager->setCurrentStore($this->storeId);
208+
198209
$synonyms = $this->synonymReader->getAllSynonyms();
199210
$synonymFilter = [];
200211

app/code/Magento/Search/Model/ResourceModel/SynonymReader.php

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66

77
namespace Magento\Search\Model\ResourceModel;
88

9+
use Magento\Framework\App\Config\ScopeConfigInterface;
910
use Magento\Framework\DB\Helper\Mysql\Fulltext;
1011
use Magento\Framework\Exception\LocalizedException;
1112
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
13+
use Magento\Store\Model\ScopeInterface;
1214
use Magento\Store\Model\StoreManagerInterface;
1315

1416
/**
@@ -55,12 +57,12 @@ public function loadByPhrase(\Magento\Search\Model\SynonymReader $object, $phras
5557
$rows = $this->queryByPhrase(strtolower($phrase));
5658
$synsPerScope = $this->getSynRowsPerScope($rows);
5759

58-
if (!empty($synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_STORES])) {
59-
$object->setData($synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_STORES]);
60-
} elseif (!empty($synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES])) {
61-
$object->setData($synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES]);
60+
if (!empty($synsPerScope[ScopeInterface::SCOPE_STORES])) {
61+
$object->setData($synsPerScope[ScopeInterface::SCOPE_STORES]);
62+
} elseif (!empty($synsPerScope[ScopeInterface::SCOPE_WEBSITES])) {
63+
$object->setData($synsPerScope[ScopeInterface::SCOPE_WEBSITES]);
6264
} else {
63-
$object->setData($synsPerScope[\Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT]);
65+
$object->setData($synsPerScope[ScopeConfigInterface::SCOPE_TYPE_DEFAULT]);
6466
}
6567
$this->_afterLoad($object);
6668
return $this;
@@ -74,9 +76,15 @@ public function loadByPhrase(\Magento\Search\Model\SynonymReader $object, $phras
7476
public function getAllSynonyms(): array
7577
{
7678
$connection = $this->getConnection();
77-
$select = $connection->select()->from($this->getMainTable(), 'synonyms');
78-
79-
return $connection->fetchCol($select);
79+
$query = $connection->select()->from($this->getMainTable());
80+
$rows = $connection->fetchAll($query);
81+
$synonymsPerScope = $this->getSynRowsPerScope($rows);
82+
83+
return array_merge(
84+
array_column($synonymsPerScope[ScopeInterface::SCOPE_STORES], 'synonyms'),
85+
array_column($synonymsPerScope[ScopeInterface::SCOPE_WEBSITES], 'synonyms'),
86+
array_column($synonymsPerScope[ScopeConfigInterface::SCOPE_TYPE_DEFAULT], 'synonyms')
87+
);
8088
}
8189

8290
/**
@@ -151,9 +159,9 @@ private function getSynRowsPerScope($rows)
151159
$synRowsForDefault[] = $row;
152160
}
153161
}
154-
$synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_STORES] = $synRowsForStoreView;
155-
$synsPerScope[\Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES] = $synRowsForWebsite;
156-
$synsPerScope[\Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT] = $synRowsForDefault;
162+
$synsPerScope[ScopeInterface::SCOPE_STORES] = $synRowsForStoreView;
163+
$synsPerScope[ScopeInterface::SCOPE_WEBSITES] = $synRowsForWebsite;
164+
$synsPerScope[ScopeConfigInterface::SCOPE_TYPE_DEFAULT] = $synRowsForDefault;
157165
return $synsPerScope;
158166
}
159167

0 commit comments

Comments
 (0)