From 874f363796340392444f1f5cc58671f683036223 Mon Sep 17 00:00:00 2001
From: Pavel Piligrimov
Date: Mon, 24 Apr 2023 14:25:30 +0500
Subject: [PATCH] min should, keyword should filter
---
src/ElasticSearch/Converter/CriteriaToEsRequest.php | 10 +++++++++-
src/ElasticSearch/Search/BoolQuery/Query.php | 1 +
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/ElasticSearch/Converter/CriteriaToEsRequest.php b/src/ElasticSearch/Converter/CriteriaToEsRequest.php
index c14c426..b5b50c6 100644
--- a/src/ElasticSearch/Converter/CriteriaToEsRequest.php
+++ b/src/ElasticSearch/Converter/CriteriaToEsRequest.php
@@ -206,6 +206,10 @@ final class CriteriaToEsRequest
$keywordFilter = new Query();
foreach ($criteria->filters() as $filterGroup) {
/** @var FilterGroupCollection $filterGroup */
+ if ($filterGroup->isEmpty()) {
+ continue;
+ }
+ $should = $filterGroup->getLogicalType()->value() === LogicOperator::OR;
foreach ($filterGroup as $filter) {
/** @var Filter $filter */
$value = $filter->value()->value();
@@ -237,7 +241,11 @@ final class CriteriaToEsRequest
$value = (string)$value;
}
- $keywordFilter->filter(new FilterKeywordFacet($field, $value));
+ if ($should) {
+ $keywordFilter->should(new FilterKeywordFacet($field, $value));
+ } else {
+ $keywordFilter->filter(new FilterKeywordFacet($field, $value));
+ }
}
}
diff --git a/src/ElasticSearch/Search/BoolQuery/Query.php b/src/ElasticSearch/Search/BoolQuery/Query.php
index 7a235b1..2e35ab0 100644
--- a/src/ElasticSearch/Search/BoolQuery/Query.php
+++ b/src/ElasticSearch/Search/BoolQuery/Query.php
@@ -113,6 +113,7 @@ final class Query implements Esable
if (false === $this->should->isEmpty()) {
$bool['should'] = $this->should->es();
+ $bool['minimum_should_match'] = 1;
}
if (false === $this->match->isEmpty()) {
--
GitLab