diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php index cbcb706d76..5e85715087 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/RangeExpression.php @@ -12,6 +12,26 @@ class RangeExpression extends Node private $higher_bound; private $higher_inclusive; + public static function lessThan(Field $field, $bound) + { + return new self($field, $bound, false); + } + + public static function lessThanOrEqual(Field $field, $bound) + { + return new self($field, $bound, true); + } + + public static function greaterThan(Field $field, $bound) + { + return new self($field, null, null, $bound, false); + } + + public static function greaterThanOrEqual(Field $field, $bound) + { + return new self($field, null, null, $bound, true); + } + public function __construct(Field $field, $lb, $li = false, $hb = null, $hi = false) { $this->field = $field; diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php index 1e21ca764e..bebacaee6f 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/QueryVisitor.php @@ -137,13 +137,13 @@ class QueryVisitor implements Visit switch ($node->getId()) { case NodeTypes::LT_EXPR: - return new AST\RangeExpression($field, $expression, false); + return AST\RangeExpression::lessThan($field, $expression); case NodeTypes::LTE_EXPR: - return new AST\RangeExpression($field, $expression, true); + return AST\RangeExpression::lessThanOrEqual($field, $expression); case NodeTypes::GT_EXPR: - return new AST\RangeExpression($field, null, null, $expression, false); + return AST\RangeExpression::greaterThan($field, $expression); case NodeTypes::GTE_EXPR: - return new AST\RangeExpression($field, null, null, $expression, true); + return AST\RangeExpression::greaterThanOrEqual($field, $expression); } }