Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
 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);
     }
 }