Example #1
0
        private static RangeQueryBase BuildRangeQuery(string fieldName, Dictionary<string, object> fieldDict)
        {
            object value = fieldDict.First(x => x.Key != QuerySerializer._BOOST).Value;

            RangeQueryBase query = null;

            if (value is Int32 || value is Int64)
            {
                query = new IntegerRangeQuery(fieldName,
                    fieldDict.GetInt64OrNull(_GREATER_THAN),
                    fieldDict.GetInt64OrNull(_LESS_THAN),
                    fieldDict.GetInt64OrNull(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetInt64OrNull(_LESS_THAN_OR_EQUAL_TO));
            }
            else if (value is Double || value is float)
            {
                query = new DoubleRangeQuery(fieldName,
                    fieldDict.GetDoubleOrNull(_GREATER_THAN),
                    fieldDict.GetDoubleOrNull(_LESS_THAN),
                    fieldDict.GetDoubleOrNull(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetDoubleOrNull(_LESS_THAN_OR_EQUAL_TO));
            }
            else
            {
                try
                {
                    DateTime.Parse(value.ToString());
                    query = new DateTimeRangeQuery(fieldName,
                        fieldDict.GetDateTimeOrNull(_GREATER_THAN),
                        fieldDict.GetDateTimeOrNull(_LESS_THAN),
                        fieldDict.GetDateTimeOrNull(_GREATER_THAN_OR_EQUAL_TO),
                        fieldDict.GetDateTimeOrNull(_LESS_THAN_OR_EQUAL_TO));
                }
                catch
                {
                    query = new StringRangeQuery(fieldName,
                        fieldDict.GetStringOrDefault(_GREATER_THAN),
                        fieldDict.GetStringOrDefault(_LESS_THAN),
                        fieldDict.GetStringOrDefault(_GREATER_THAN_OR_EQUAL_TO),
                        fieldDict.GetStringOrDefault(_LESS_THAN_OR_EQUAL_TO));
                }
            }

            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }
Example #2
0
        private static RangeFilterBase BuildRangeFilter(string fieldName, Dictionary<string, object> fieldDict)
        {
            object value = fieldDict.First().Value;

            if (value is Int32 || value is Int64)
            {
                return new IntegerRangeFilter(fieldName,
                    fieldDict.GetInt64OrNull(_GREATER_THAN),
                    fieldDict.GetInt64OrNull(_LESS_THAN),
                    fieldDict.GetInt64OrNull(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetInt64OrNull(_LESS_THAN_OR_EQUAL_TO));
            }

            if (value is Double || value is float)
            {
                return new DoubleRangeFilter(fieldName,
                    fieldDict.GetDoubleOrNull(_GREATER_THAN),
                    fieldDict.GetDoubleOrNull(_LESS_THAN),
                    fieldDict.GetDoubleOrNull(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetDoubleOrNull(_LESS_THAN_OR_EQUAL_TO));
            }

            try
            {
                DateTime.Parse(value.ToString());
                return new DateTimeRangeFilter(fieldName,
                    fieldDict.GetDateTimeOrNull(_GREATER_THAN),
                    fieldDict.GetDateTimeOrNull(_LESS_THAN),
                    fieldDict.GetDateTimeOrNull(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetDateTimeOrNull(_LESS_THAN_OR_EQUAL_TO));
            }
            catch
            {
                return new StringRangeFilter(fieldName,
                    fieldDict.GetStringOrDefault(_GREATER_THAN),
                    fieldDict.GetStringOrDefault(_LESS_THAN),
                    fieldDict.GetStringOrDefault(_GREATER_THAN_OR_EQUAL_TO),
                    fieldDict.GetStringOrDefault(_LESS_THAN_OR_EQUAL_TO));
            }
        }