Ejemplo n.º 1
0
        protected LuceneFilter GetFilter(Salary salary, bool excludeNoSalary)
        {
            int minSalary, maxSalary;

            //Ensure salary is yearly before filtering
            if (salary != null)
            {
                salary = salary.ToRate(SalaryRate.Year);
            }

            if (salary == null || !GetFilterFieldValues(salary.LowerBound, salary.UpperBound, out minSalary, out maxSalary) || (minSalary == 0 && maxSalary == int.MaxValue))
            {
                return(excludeNoSalary
                    ? _nonNullSalaryFilter
                    : null);
            }

            var boundaryFilters = new List <LuceneFilter>(2);

            if (minSalary != 0)
            {
                boundaryFilters.Add(FieldCacheRangeFilter.newIntRange(_maxFieldName, new java.lang.Integer(minSalary), null, true, true));
            }

            if (maxSalary != int.MaxValue)
            {
                boundaryFilters.Add(FieldCacheRangeFilter.newIntRange(_minFieldName, new java.lang.Integer(1), new java.lang.Integer(maxSalary), true, true));
            }

            var salaryFilter = new ChainedFilter(boundaryFilters.ToArray(), ChainedFilter.AND);

            return(!excludeNoSalary
                ? new ChainedFilter(new[] { salaryFilter, _nullSalaryFilter }, ChainedFilter.OR)
                : salaryFilter);
        }
Ejemplo n.º 2
0
        private FieldCacheRangeFilter <string> BuildDateFilter(string startDate, string endDate)
        {
            var    includeLower = false;
            var    includeUpper = false;
            string start        = null;
            string end          = null;

            if (string.IsNullOrEmpty(startDate) == false)
            {
                includeLower = true;

                start = DateTools.DateToString(
                    Convert.ToDateTime(startDate),
                    DateTools.Resolution.DAY);
            }

            if (string.IsNullOrEmpty(endDate) == false)
            {
                includeUpper = true;

                end = DateTools.DateToString(
                    Convert.ToDateTime(endDate),
                    DateTools.Resolution.DAY);
            }

            return(FieldCacheRangeFilter.NewStringRange(
                       "dataCriacao",
                       start,
                       includeLower: includeLower,
                       upperVal: end,
                       includeUpper: includeUpper));
        }
        protected override Filter GetFilter(Options options)
        {
            DateTime minDateValue = options.DateRange.StartDate ?? DateTime.MinValue;
            string   minDate      = DateTools.DateToString(minDateValue, DateTools.Resolution.MILLISECOND);

            DateTime maxDateValue = options.DateRange.EndDate ?? DateTime.MaxValue;
            string   maxDate      = DateTools.DateToString(maxDateValue, DateTools.Resolution.MILLISECOND);

            return(FieldCacheRangeFilter.NewStringRange("PublicationDate",
                                                        minDate, maxDate,
                                                        true, true));
        }
Ejemplo n.º 4
0
        public void TestRanges()
        {
            Directory         dir = NewDirectory();
            RandomIndexWriter iw  = new RandomIndexWriter(
#if FEATURE_INSTANCE_TESTDATA_INITIALIZATION
                this,
#endif
                Random, dir);
            Document doc      = new Document();
            Field    field    = NewField("field", "", StringField.TYPE_STORED);
            Collator collator = Collator.GetInstance(CultureInfo.CurrentCulture); // uses -Dtests.locale

            if (Random.nextBoolean())
            {
                collator.Strength = CollationStrength.Primary;
            }
            ICUCollationDocValuesField collationField = new ICUCollationDocValuesField("collated", collator);

            doc.Add(field);
            doc.Add(collationField);

            int numDocs = AtLeast(500);

            for (int i = 0; i < numDocs; i++)
            {
                String value = TestUtil.RandomSimpleString(Random);
                field.SetStringValue(value);
                collationField.SetStringValue(value);
                iw.AddDocument(doc);
            }

            IndexReader ir = iw.GetReader();

            iw.Dispose();
            IndexSearcher @is = NewSearcher(ir);

            int numChecks = AtLeast(100);

            for (int i = 0; i < numChecks; i++)
            {
                String   start    = TestUtil.RandomSimpleString(Random);
                String   end      = TestUtil.RandomSimpleString(Random);
                BytesRef lowerVal = new BytesRef(collator.GetCollationKey(start).ToByteArray());
                BytesRef upperVal = new BytesRef(collator.GetCollationKey(end).ToByteArray());
                Query    query    = new ConstantScoreQuery(FieldCacheRangeFilter.NewBytesRefRange("collated", lowerVal, upperVal, true, true));
                DoTestRanges(@is, start, end, query, collator);
            }

            ir.Dispose();
            dir.Dispose();
        }
        public void TestRanges()
        {
            Directory         dir      = NewDirectory();
            RandomIndexWriter iw       = new RandomIndexWriter(Random(), dir, Similarity, TimeZone);
            Document          doc      = new Document();
            Field             field    = NewField("field", "", StringField.TYPE_STORED);
            Collator          collator = Collator.Create(CultureInfo.CurrentCulture, Collator.Fallback.FallbackAllowed); // uses -Dtests.locale

            if (Random().nextBoolean())
            {
                collator.Strength = CollationStrength.Primary;
            }
            ICUCollationDocValuesField collationField = new ICUCollationDocValuesField("collated", collator);

            doc.Add(field);
            doc.Add(collationField);

            int numDocs = AtLeast(500);

            for (int i = 0; i < numDocs; i++)
            {
                String value = TestUtil.RandomSimpleString(Random());
                field.SetStringValue(value);
                collationField.SetStringValue(value);
                iw.AddDocument(doc);
            }

            IndexReader ir = iw.Reader;

            iw.Dispose();
            IndexSearcher @is = NewSearcher(ir);

            int numChecks = AtLeast(100);

            for (int i = 0; i < numChecks; i++)
            {
                String   start    = TestUtil.RandomSimpleString(Random());
                String   end      = TestUtil.RandomSimpleString(Random());
                BytesRef lowerVal = new BytesRef(collator.GetSortKey(start).KeyData);
                BytesRef upperVal = new BytesRef(collator.GetSortKey(end).KeyData);
                Query    query    = new ConstantScoreQuery(FieldCacheRangeFilter.NewBytesRefRange("collated", lowerVal, upperVal, true, true));
                DoTestRanges(@is, start, end, query, collator);
            }

            ir.Dispose();
            dir.Dispose();
        }
Ejemplo n.º 6
0
        public void ConstructDateFilter(string dateFieldKey, DateTime start, DateTime finish)
        {
            string startString  = DateTools.DateToString(start, DateTools.Resolution.MILLISECOND);
            string finishString = DateTools.DateToString(finish, DateTools.Resolution.MILLISECOND);

            if (!String.IsNullOrEmpty(startString) && !String.IsNullOrEmpty(finishString))
            {
                DateFilter = FieldCacheRangeFilter.NewStringRange(dateFieldKey,
                                                                  lowerVal: startString, includeLower: true,
                                                                  upperVal: finishString, includeUpper: true);
            }
            else if (String.IsNullOrEmpty(startString) && !String.IsNullOrEmpty(finishString))
            {
                DateFilter = FieldCacheRangeFilter.NewStringRange(dateFieldKey,
                                                                  lowerVal: startString, includeLower: true,
                                                                  upperVal: null, includeUpper: false);
            }
            else if (!String.IsNullOrEmpty(startString) && String.IsNullOrEmpty(finishString))
            {
                DateFilter = FieldCacheRangeFilter.NewStringRange(dateFieldKey,
                                                                  lowerVal: null, includeLower: false,
                                                                  upperVal: finishString, includeUpper: true);
            }
        }
Ejemplo n.º 7
0
 protected LuceneFilter GetFilter(DateTime?minTimestamp)
 {
     return(minTimestamp == null
         ? null
         : FieldCacheRangeFilter.newIntRange(_fieldName, new java.lang.Integer(minTimestamp.Value.ToFieldValue(_timeGranularity)), null, true, true));
 }