diff --git a/workflow/engine/classes/class.AppSolr.php b/workflow/engine/classes/class.AppSolr.php index e64d51a10..74e6c94b2 100644 --- a/workflow/engine/classes/class.AppSolr.php +++ b/workflow/engine/classes/class.AppSolr.php @@ -1169,7 +1169,7 @@ class AppSolr } } } - + // validate phrase in case of date if (($searchText [1] == "[")) { // validate date range format @@ -1210,7 +1210,54 @@ class AppSolr throw new InvalidIndexSearchTextException ("Invalid search text. Expected date interval format => {variable_name}:[YYYY-MM-DD TO YYYY-MM-DD]"); } } - + + // validate phrase in case of < and <= + $result1 = strpos($searchText, '<'); + if($result1 !== FALSE){ + $result = strpos($searchText, '<='); + if ($result !== FALSE){ + $v1 = str_replace( '<=', '', $searchText ); + $v2 = str_replace( ':', '', $v1); + $v3 = str_replace( '<','' ,':[* TO '.$v2.']' ); + $searchText = $v3; + } + else { + $v1 = str_replace( '<', '', $searchText ); + $v2 = str_replace( ':', '', $v1); + $v3 = (int) $v2-1; + $v4 = str_replace( '<','' ,':[* TO '.$v3.']' ); + $searchText = $v4; + } + } + // validate phrase in case of > and >= + $result2 = strpos($searchText, '>'); + if($result2 !== FALSE){ + $result = strpos($searchText, '>='); + if ($result !== FALSE){ + $v1 = str_replace( '>=', '', $searchText ); + $v2 = str_replace( ':', '', $v1); + $v3 = str_replace( '>','' ,':['.$v2.' TO *]' ); + $searchText = $v3; + } + else { + $v1 = str_replace( '>', '', $searchText ); + $v2 = str_replace( ':', '', $v1 ); + $v3 = (int) $v2+1; + $v4 = str_replace( '>','' ,':['.$v3.' TO *]' ); + $searchText = $v4; + } + + } + + // validate phrase in case of | + $result2 = strpos($searchText, '|'); + if($result2 !== FALSE){ + $v1 = str_replace( '|', ' TO ', $searchText ); + $v2 = str_replace( ':', '', $v1 ); + $v3 = str_replace( '','' ,':['.$v2.']' ); + $searchText = $v3; + } + //echo $searchText; $formattedSearchText .= $indexFieldName . $searchText; $includeToken = true; }