Lucene.Net.QueryParsers.Xml.Builders.NumericRangeQueryBuilder.GetQuery C# (CSharp) Method

GetQuery() public method

public GetQuery ( XmlElement e ) : Query
e System.Xml.XmlElement
return Lucene.Net.Search.Query
        public virtual Query GetQuery(XmlElement e)
        {
            string field = DOMUtils.GetAttributeWithInheritanceOrFail(e, "fieldName");
            string lowerTerm = DOMUtils.GetAttributeOrFail(e, "lowerTerm");
            string upperTerm = DOMUtils.GetAttributeOrFail(e, "upperTerm");
            bool lowerInclusive = DOMUtils.GetAttribute(e, "includeLower", true);
            bool upperInclusive = DOMUtils.GetAttribute(e, "includeUpper", true);
            int precisionStep = DOMUtils.GetAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);

            string type = DOMUtils.GetAttribute(e, "type", "int");
            try
            {
                Query filter;
                if (type.Equals("int", StringComparison.OrdinalIgnoreCase))
                {
                    filter = NumericRangeQuery.NewIntRange(field, precisionStep, Convert
                        .ToInt32(lowerTerm), Convert.ToInt32(upperTerm), lowerInclusive,
                        upperInclusive);
                }
                else if (type.Equals("long", StringComparison.OrdinalIgnoreCase))
                {
                    filter = NumericRangeQuery.NewLongRange(field, precisionStep, Convert
                        .ToInt64(lowerTerm), Convert.ToInt64(upperTerm), lowerInclusive,
                        upperInclusive);
                }
                else if (type.Equals("double", StringComparison.OrdinalIgnoreCase))
                {
                    filter = NumericRangeQuery.NewDoubleRange(field, precisionStep, Convert
                        .ToDouble(lowerTerm), Convert.ToDouble(upperTerm), lowerInclusive,
                        upperInclusive);
                }
                else if (type.Equals("float", StringComparison.OrdinalIgnoreCase))
                {
                    filter = NumericRangeQuery.NewFloatRange(field, precisionStep, Convert
                        .ToSingle(lowerTerm), Convert.ToSingle(upperTerm), lowerInclusive,
                        upperInclusive);
                }
                else
                {
                    throw new ParserException("type attribute must be one of: [long, int, double, float]");
                }
                return filter;
            }
            catch (FormatException nfe)
            {
                throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
            }
        }
    }

Usage Example

Beispiel #1
0
        public void TestGetFilterInt()
        {
            NumericRangeQueryBuilder filterBuilder = new NumericRangeQueryBuilder();

            String      xml    = "<NumericRangeQuery fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10'/>";
            XmlDocument doc    = GetDocumentFromString(xml);
            Query       filter = filterBuilder.GetQuery(doc.DocumentElement);

            assertTrue(filter is NumericRangeQuery <int>);

            NumericRangeQuery <int> numRangeFilter = (NumericRangeQuery <int>)filter;

            assertEquals(Convert.ToInt32(-1), numRangeFilter.Min);
            assertEquals(Convert.ToInt32(10), numRangeFilter.Max);
            assertEquals("AGE", numRangeFilter.Field);
            assertTrue(numRangeFilter.IncludesMin);
            assertTrue(numRangeFilter.IncludesMax);

            String      xml2    = "<NumericRangeQuery fieldName='AGE' type='int' lowerTerm='-1' upperTerm='10' includeUpper='false'/>";
            XmlDocument doc2    = GetDocumentFromString(xml2);
            Query       filter2 = filterBuilder.GetQuery(doc2.DocumentElement);

            assertTrue(filter2 is NumericRangeQuery <int>);

            NumericRangeQuery <int> numRangeFilter2 = (NumericRangeQuery <int>)filter2;

            assertEquals(Convert.ToInt32(-1), numRangeFilter2.Min);
            assertEquals(Convert.ToInt32(10), numRangeFilter2.Max);
            assertEquals("AGE", numRangeFilter2.Field);
            assertTrue(numRangeFilter2.IncludesMin);
            assertFalse(numRangeFilter2.IncludesMax);
        }
All Usage Examples Of Lucene.Net.QueryParsers.Xml.Builders.NumericRangeQueryBuilder::GetQuery
NumericRangeQueryBuilder