50 lines
1.2 KiB
PHP
Executable File
50 lines
1.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* @author Amasty Team
|
|
* @copyright Copyright (c) Amasty (https://www.amasty.com)
|
|
* @package Elastic Search Base for Magento 2
|
|
*/
|
|
|
|
namespace Amasty\ElasticSearch\Plugin\Xsearch\Helper;
|
|
|
|
use \Amasty\ElasticSearch\Model\Search\GetRequestQuery\InjectMatchQuery;
|
|
|
|
class Data
|
|
{
|
|
/**
|
|
* @var InjectMatchQuery
|
|
*/
|
|
private $injectMatchQuery;
|
|
|
|
public function __construct(
|
|
InjectMatchQuery $injectMatchQuery
|
|
) {
|
|
$this->injectMatchQuery = $injectMatchQuery;
|
|
}
|
|
|
|
/**
|
|
* @param \Amasty\Xsearch\Helper\Data $subject
|
|
* @param string $text
|
|
* @param string $query
|
|
* @return array
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function beforeHighlight(
|
|
\Amasty\Xsearch\Helper\Data $subject,
|
|
$text,
|
|
$query
|
|
) {
|
|
if ($query) {
|
|
/**
|
|
* Quick fix magento bug in \Magento\Framework\DB\Adapter\Pdo::_splitMultiQuery(sql)
|
|
* This algorithm does not work properly
|
|
*/
|
|
$query = str_replace(';', '', $query);
|
|
$words = $this->injectMatchQuery->removeStopWords(explode(' ', $query));
|
|
$query = implode(' ', $words);
|
|
}
|
|
|
|
return [$text, $query];
|
|
}
|
|
}
|