diff --git a/src/SearchAPI/Query/FilterBuilder.php b/src/SearchAPI/Query/FilterBuilder.php index f75b28b..f50fa3a 100644 --- a/src/SearchAPI/Query/FilterBuilder.php +++ b/src/SearchAPI/Query/FilterBuilder.php @@ -197,50 +197,43 @@ class FilterBuilder { * The filter term array. */ protected function getRangeFilter(Condition $condition, array $index_fields) : array { + $isNeg = FALSE; $field = $index_fields[$condition->getField()] ?? NULL; $field_type = $field?->getType() ?? ''; - $rangeOption = [ - 'from' => NULL, - 'to' => NULL, - 'include_lower' => FALSE, - 'include_upper' => FALSE, - ]; - $isNeg = FALSE; + $rangeOption = []; + $value = $condition->getValue(); switch ($condition->getOperator()) { case '>=': - $rangeOption["include_lower"] = TRUE; + $rangeOption["gte"] = $value; + break; + case '>': - $rangeOption["from"] = $condition->getValue() ?? NULL; + $rangeOption["gt"] = $value; break; case '<=': - $rangeOption["include_upper"] = TRUE; + $rangeOption["lte"] = $value; + break; + case '<': - $rangeOption["to"] = $condition->getValue() ?? NULL; + $rangeOption["lt"] = $value; break; case 'NOT BETWEEN': $isNeg = TRUE; - $rangeOption["from"] = $condition->getValue()[0] ?? NULL; - $rangeOption["to"] = $condition->getValue()[1] ?? NULL; - - break; - case 'BETWEEN': - $rangeOption["from"] = $condition->getValue()[0] ?? NULL; - $rangeOption["to"] = $condition->getValue()[1] ?? NULL; - - $rangeOption["include_lower"] = TRUE; - $rangeOption["include_upper"] = TRUE; + $rangeOption["gte"] = $value[0] ?? NULL; + $rangeOption["lte"] = $value[1] ?? NULL; break; } - $allInt = (isset($rangeOption["from"]) ? is_int($rangeOption["from"]) : TRUE) - && (isset($rangeOption["to"]) ? is_int($rangeOption["to"]) : TRUE); + $allInt = is_array($value) + && (isset($value[0]) && is_int($value[0])) + && (isset($value[1]) && is_int($value[1])); if ($field_type == "date" && $allInt) { $rangeOption["format"] = "epoch_second";