Merge pull request #209 from pbalcerzak/OPSRC-684/fuzziness_as_parameter

OPSRC-684/Made fuzziness configurable
This commit is contained in:
Marcin Kukliński
2022-09-28 08:33:59 +02:00
committed by GitHub
4 changed files with 16 additions and 5 deletions

View File

@@ -21,6 +21,8 @@ final class SearchProductsQueryBuilderSpec extends ObjectBehavior
private $hasChannelQuery;
private $fuzziness;
function let(
SearchPropertyNameResolverRegistryInterface $searchPropertyNameResolverRegistry,
LocaleContextInterface $localeContext,
@@ -35,11 +37,13 @@ final class SearchProductsQueryBuilderSpec extends ObjectBehavior
$this->hasChannelQuery = new Terms('channels');
$this->hasChannelQuery->setTerms(['web_us']);
$hasChannelQueryBuilder->buildQuery([])->willReturn($this->hasChannelQuery);
$this->fuzziness = 'AUTO';
$this->beConstructedWith(
$searchPropertyNameResolverRegistry,
$localeContext,
$isEnabledQueryBuilder,
$hasChannelQueryBuilder
$hasChannelQueryBuilder,
$this->fuzziness
);
}
@@ -67,7 +71,7 @@ final class SearchProductsQueryBuilderSpec extends ObjectBehavior
{
$expectedMultiMatch = new MultiMatch();
$expectedMultiMatch->setQuery('bmw');
$expectedMultiMatch->setFuzziness('AUTO');
$expectedMultiMatch->setFuzziness($this->fuzziness);
$expectedMultiMatch->setFields([]);
$expectedQuery = new BoolQuery();
$expectedQuery->addMust($expectedMultiMatch);
@@ -89,7 +93,7 @@ final class SearchProductsQueryBuilderSpec extends ObjectBehavior
);
$expectedMultiMatch = new MultiMatch();
$expectedMultiMatch->setQuery('bmw');
$expectedMultiMatch->setFuzziness('AUTO');
$expectedMultiMatch->setFuzziness($this->fuzziness);
$expectedMultiMatch->setFields(['property_1_en_us', 'property_2_en_us']);
$expectedQuery = new BoolQuery();
$expectedQuery->addMust($expectedMultiMatch);

View File

@@ -32,16 +32,21 @@ final class SearchProductsQueryBuilder implements QueryBuilderInterface
/** @var QueryBuilderInterface */
private $hasChannelQueryBuilder;
/** @var string */
private $fuzziness;
public function __construct(
SearchPropertyNameResolverRegistryInterface $searchProperyNameResolverRegistry,
LocaleContextInterface $localeContext,
QueryBuilderInterface $isEnabledQueryBuilder,
QueryBuilderInterface $hasChannelQueryBuilder
QueryBuilderInterface $hasChannelQueryBuilder,
string $fuzziness
) {
$this->searchProperyNameResolverRegistry = $searchProperyNameResolverRegistry;
$this->localeContext = $localeContext;
$this->isEnabledQueryBuilder = $isEnabledQueryBuilder;
$this->hasChannelQueryBuilder = $hasChannelQueryBuilder;
$this->fuzziness = $fuzziness;
}
public function buildQuery(array $data): ?AbstractQuery
@@ -68,7 +73,7 @@ final class SearchProductsQueryBuilder implements QueryBuilderInterface
$multiMatch = new MultiMatch();
$multiMatch->setQuery($query);
$multiMatch->setFuzziness('AUTO');
$multiMatch->setFuzziness($this->fuzziness);
$fields = [];
foreach ($this->searchProperyNameResolverRegistry->getPropertyNameResolvers() as $propertyNameResolver) {
$fields[] = $propertyNameResolver->resolvePropertyName($this->localeContext->getLocaleCode());

View File

@@ -10,6 +10,7 @@ parameters:
bitbag_es_pagination_available_page_limits: [9, 18, 36]
bitbag_es_pagination_default_limit: 9
bitbag_es_fuzziness: AUTO
fos_elastica:
clients:

View File

@@ -86,6 +86,7 @@
<argument type="service" id="sylius.context.locale" />
<argument type="service" id="bitbag_sylius_elasticsearch_plugin.query_builder.is_enabled" />
<argument type="service" id="bitbag_sylius_elasticsearch_plugin.query_builder.has_channel" />
<argument>%bitbag_es_fuzziness%</argument>
</service>
</services>
</container>