public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { RandomAccessFilter filter = null; if (vals.Length > 1) { MultiValueORFacetFilter f = new MultiValueORFacetFilter(this, vals, false); // catch the "not" case later if (!isNot) { AdaptiveFacetFilter af = new AdaptiveFacetFilter(new SimpleDataCacheBuilder(Name, _indexFieldName), f, vals, false); return(af); } else { filter = f; } } else if (vals.Length == 1) { filter = BuildRandomAccessFilter(vals[0], prop); } else { filter = EmptyFilter.Instance; } if (isNot) { filter = new RandomAccessNotFilter(filter); } return(filter); }
public virtual RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { List <RandomAccessFilter> filterList = new List <RandomAccessFilter>(vals.Length); foreach (string val in vals) { RandomAccessFilter f = BuildRandomAccessFilter(val, prop); if (f != null && !(f is EmptyFilter)) { filterList.Add(f); } } RandomAccessFilter finalFilter; if (filterList.Count == 0) { finalFilter = EmptyFilter.Instance; } else { finalFilter = new RandomAccessOrFilter(filterList); } if (isNot) { finalFilter = new RandomAccessNotFilter(finalFilter); } return(finalFilter); }
public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { RandomAccessFilter filter = null; if (vals.Length > 1) { RandomAccessFilter f = new FacetOrFilter(this, vals, false); filter = new AdaptiveFacetFilter( new SimpleFacetHandlerFacetDataCacheBuilder(this.GetFacetData <FacetDataCache>, _name, _indexFieldName), f, vals, isNot); } else if (vals.Length == 1) { filter = BuildRandomAccessFilter(vals[0], prop); } else { filter = EmptyFilter.Instance; } if (isNot) { filter = new RandomAccessNotFilter(filter); } return(filter); }
public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { RandomAccessFilter filter = null; if (vals.Length > 0) { filter = new CompactMultiValueFacetFilter(this, vals); } else { filter = EmptyFilter.Instance; } if (isNot) { filter = new RandomAccessNotFilter(filter); } return(filter); }
public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { if (vals.Length > 1) { if (vals.Length > 0) { int depth = GetDepth(prop); bool strict = IsStrict(prop); PathValueConverter valConverter = new PathValueConverter(depth, strict, _separator); if (_multiValue) { return(new MultiValueORFacetFilter(this, vals, valConverter, isNot)); } return(new FacetOrFilter(this, vals, isNot, valConverter)); } else { if (isNot) { return(null); } else { return(EmptyFilter.Instance); } } } else { RandomAccessFilter f = BuildRandomAccessFilter(vals[0], prop); if (f == null) { return(f); } if (isNot) { f = new RandomAccessNotFilter(f); } return(f); } }
public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot) { if (vals.Length > 1) { return(new BitSetFilter(new ValueConverterBitSetBuilder(FacetRangeFilter.FacetRangeValueConverter.Instance, vals, isNot), new SimpleDataCacheBuilder(Name, _indexFieldName))); } else { RandomAccessFilter filter = BuildRandomAccessFilter(vals[0], prop); if (filter == null) { return(filter); } if (isNot) { filter = new RandomAccessNotFilter(filter); } return(filter); } }