Files
ltsecurityinc/app/code/Amasty/ElasticSearch/Model/Indexer/Data/External/RelevanceBoostDataMapper.php
T

56 lines
1.6 KiB
PHP
Executable File

<?php
declare(strict_types=1);
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package Elastic Search Base for Magento 2
*/
namespace Amasty\ElasticSearch\Model\Indexer\Data\External;
use Amasty\ElasticSearch\Api\Data\Indexer\Data\DataMapperInterface;
use Amasty\ElasticSearch\Api\RelevanceRuleRepositoryInterface;
use Magento\Store\Model\StoreManagerInterface;
class RelevanceBoostDataMapper implements DataMapperInterface
{
public const DEFAULT_RELEVANCE = 1.;
public const ATTRIBUTE_NAME = 'amasty_product_relevance';
/**
* @var RelevanceRuleRepositoryInterface
*/
private $relevanceRuleRepository;
/**
* @var StoreManagerInterface
*/
private $storeManager;
public function __construct(
RelevanceRuleRepositoryInterface $relevanceRuleRepository,
StoreManagerInterface $storeManager
) {
$this->relevanceRuleRepository = $relevanceRuleRepository;
$this->storeManager = $storeManager;
}
public function map(array $indexData, $storeId, array $context = []): array
{
$websiteId = $this->storeManager->getStore($storeId)->getWebsiteId();
$productIds = array_keys($indexData);
$productBoostData = $this->relevanceRuleRepository->getProductBoostMultipliers($productIds, (int) $websiteId);
$indexBoostData = [];
foreach ($indexData as $productId => $productData) {
$indexBoostData[$productId] = [
self::ATTRIBUTE_NAME => $productBoostData[$productId] ?? self::DEFAULT_RELEVANCE
];
}
return $indexBoostData;
}
}