示例#1
0
        public override Query VisitNumericRangeQuery(NumericRangeQuery numericRangeq)
        {
            var field = numericRangeq.GetField();
            var min = numericRangeq.GetMin();
            var max = numericRangeq.GetMax();
            var includesMin = numericRangeq.IncludesMin();
            var includesMax = numericRangeq.IncludesMax();
            ValueType oneValue = null;

            _text.Append(field);
            _text.Append(":");

            string op = null;
            if (min == null)
            {
                op = includesMax ? "<=" : "<";
                oneValue = max;
            }
            if (max == null)
            {
                op = includesMin ? ">=" : ">";
                oneValue = min;
            }

            if (op == null)
            {
                _text.Append(includesMin ? '[' : '{');
                _text.Append(Convert.ToString(min, CultureInfo.InvariantCulture));
                _text.Append(" TO ");
                _text.Append(Convert.ToString(max, CultureInfo.InvariantCulture));
                _text.Append(includesMax ? ']' : '}');
            }
            else
            {
                _text.Append(op).Append(oneValue);
            }

            _text.Append(BoostToString(numericRangeq.GetBoost()));

            return base.VisitNumericRangeQuery(numericRangeq);
        }
示例#2
0
        public virtual Query VisitNumericRangeQuery(NumericRangeQuery numericRangeq)
        {
            var field = numericRangeq.GetField();
            var visitedField = VisitField(field);
            if (field == visitedField)
                return numericRangeq;

            var min = numericRangeq.GetMin();
            if (min is Int32)
                return NumericRangeQuery.NewIntRange(visitedField, numericRangeq.GetMin(), numericRangeq.GetMax(), numericRangeq.IncludesMin(), numericRangeq.IncludesMax());
            if (min is Int64)
                return NumericRangeQuery.NewLongRange(visitedField, numericRangeq.GetMin(), numericRangeq.GetMax(), numericRangeq.IncludesMin(), numericRangeq.IncludesMax());
            if (min is Single)
                return NumericRangeQuery.NewFloatRange(visitedField, (Single)numericRangeq.GetMin(), (Single)numericRangeq.GetMax(), numericRangeq.IncludesMin(), numericRangeq.IncludesMax());
            if (min is Double)
                return NumericRangeQuery.NewDoubleRange(visitedField, (Double)numericRangeq.GetMin(), (Double)numericRangeq.GetMax(), numericRangeq.IncludesMin(), numericRangeq.IncludesMax());

            throw new NotImplementedException(String.Format("VisitNumericRangeQuery with {0} minvalue is not implemented.", min.GetType().Name));
        }