public static Filter CreateRangeFilterForValue(string fieldName, string lower, string upper, bool includeLower, bool includeUpper) { Filter result = null; // If both bounds are empty, ignore this range if (!string.IsNullOrEmpty(lower) || !string.IsNullOrEmpty(upper)) { var lowerLong = ConvertToDateTimeTicks(lower); var upperLong = ConvertToDateTimeTicks(upper); if (lowerLong != null || upperLong != null) { result = NumericRangeFilter.NewInt64Range(fieldName, lowerLong, upperLong, includeLower, includeUpper); } else { var lowerDouble = ConvertToDouble(lower); var upperDouble = ConvertToDouble(upper); if (lowerDouble != null || upperDouble != null) { result = NumericRangeFilter.NewDoubleRange(fieldName, lowerDouble, upperDouble, includeLower, includeUpper); } else { result = TermRangeFilter.NewStringRange(fieldName, lower, upper, includeLower, includeUpper); } } } return(result); }
public virtual Filter GetFilter(XmlElement e) { string fieldName = DOMUtils.GetAttributeWithInheritance(e, "fieldName"); string lowerTerm = e.GetAttribute("lowerTerm"); string upperTerm = e.GetAttribute("upperTerm"); bool includeLower = DOMUtils.GetAttribute(e, "includeLower", true); bool includeUpper = DOMUtils.GetAttribute(e, "includeUpper", true); return(TermRangeFilter.NewStringRange(fieldName, lowerTerm, upperTerm, includeLower, includeUpper)); }
public override void SetUp() { base.SetUp(); directory = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter( #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION this, #endif Random, directory); // we use the default Locale/TZ since LuceneTestCase randomizes it var cal = new GregorianCalendar().ToDateTime(2003, 1, 1, 0, 0, 0, 0); // 2003 January 01 cal = TimeZoneInfo.ConvertTime(cal, TimeZoneInfo.Local); for (int i = 0; i < Max; i++) { Document doc = new Document(); doc.Add(NewStringField("key", "" + (i + 1), Field.Store.YES)); doc.Add(NewStringField("owner", (i < Max / 2) ? "bob" : "sue", Field.Store.YES)); doc.Add(NewStringField("date", cal.ToString(CultureInfo.InvariantCulture), Field.Store.YES)); writer.AddDocument(doc); cal = cal.AddDays(1); } reader = writer.GetReader(); writer.Dispose(); searcher = NewSearcher(reader); // query for everything to make life easier BooleanQuery bq = new BooleanQuery(); bq.Add(new TermQuery(new Term("owner", "bob")), Occur.SHOULD); bq.Add(new TermQuery(new Term("owner", "sue")), Occur.SHOULD); query = bq; // date filter matches everything too //Date pastTheEnd = parseDate("2099 Jan 1"); // dateFilter = DateFilter.Before("date", pastTheEnd); // just treat dates as strings and select the whole range for now... dateFilter = TermRangeFilter.NewStringRange("date", "", "ZZZZ", true, true); bobFilter = new QueryWrapperFilter( new TermQuery(new Term("owner", "bob"))); sueFilter = new QueryWrapperFilter( new TermQuery(new Term("owner", "sue"))); }
public override void SetUp() { base.SetUp(); directory = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), directory, Similarity, TimeZone); // we use the default Locale/TZ since LuceneTestCase randomizes it var cal = new DateTime(1970, 1, 1, 0, 0, 0, (int)TestUtil.NextLong(Random(), 0, long.MaxValue), new GregorianCalendar()); for (int i = 0; i < Max; i++) { Document doc = new Document(); doc.Add(NewStringField("key", "" + (i + 1), Field.Store.YES)); doc.Add(NewStringField("owner", (i < Max / 2) ? "bob" : "sue", Field.Store.YES)); doc.Add(NewStringField("date", cal.ToString(CultureInfo.InvariantCulture), Field.Store.YES)); writer.AddDocument(doc); cal = cal.AddDays(1); } reader = writer.Reader; writer.Dispose(); searcher = NewSearcher(reader); // query for everything to make life easier BooleanQuery bq = new BooleanQuery(); bq.Add(new TermQuery(new Term("owner", "bob")), BooleanClause.Occur.SHOULD); bq.Add(new TermQuery(new Term("owner", "sue")), BooleanClause.Occur.SHOULD); query = bq; // date filter matches everything too //Date pastTheEnd = parseDate("2099 Jan 1"); // dateFilter = DateFilter.Before("date", pastTheEnd); // just treat dates as strings and select the whole range for now... dateFilter = TermRangeFilter.NewStringRange("date", "", "ZZZZ", true, true); bobFilter = new QueryWrapperFilter(new TermQuery(new Term("owner", "bob"))); sueFilter = new QueryWrapperFilter(new TermQuery(new Term("owner", "sue"))); }
private Filter GetRangeFilter(string field, string lowerPrice, string upperPrice) { Filter f = TermRangeFilter.NewStringRange(field, lowerPrice, upperPrice, true, true); return(f); }