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); }
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)); }
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(); }
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); } }
protected LuceneFilter GetFilter(DateTime?minTimestamp) { return(minTimestamp == null ? null : FieldCacheRangeFilter.newIntRange(_fieldName, new java.lang.Integer(minTimestamp.Value.ToFieldValue(_timeGranularity)), null, true, true)); }