/// <summary> /// gets distribution of the value arrays. When predefined ranges are available, this returns distribution by predefined ranges. /// </summary> /// <returns></returns> public virtual BigSegmentedArray GetCountDistribution() { BigSegmentedArray dist = null; if (_predefinedRangeIndexes != null) { dist = new LazyBigIntArray(_predefinedRangeIndexes.Length); int n = 0; foreach (int[] range in _predefinedRangeIndexes) { int start = range[0]; int end = range[1]; int sum = 0; for (int i = start; i < end; ++i) { sum += _count.Get(i); } dist.Add(n++, sum); } } else { dist = _count; } return dist; }
public virtual FacetIterator Iterator() { if (_predefinedRanges != null) { BigSegmentedArray rangeCounts = new LazyBigIntArray(_predefinedRangeIndexes.Length); for (int k = 0; k < _predefinedRangeIndexes.Length; ++k) { int count = 0; int idx = _predefinedRangeIndexes[k][0]; int end = _predefinedRangeIndexes[k][1]; while (idx <= end) { count += _count.Get(idx++); } rangeCounts.Add(k, rangeCounts.Get(k) + count); } return new DefaultFacetIterator(_predefinedRanges, rangeCounts, rangeCounts.Size(), true); } return null; }
public virtual List<BrowseFacet> GetFacetsNew() { if (_ospec != null) { if (_predefinedRangeIndexes != null) { int minCount = _ospec.MinHitCount; int maxNumOfFacets = _ospec.MaxCount; if (maxNumOfFacets <= 0 || maxNumOfFacets > _predefinedRangeIndexes.Length) maxNumOfFacets = _predefinedRangeIndexes.Length; BigSegmentedArray rangeCount = new LazyBigIntArray(_predefinedRangeIndexes.Length); for (int k = 0; k < _predefinedRangeIndexes.Length; ++k) { int count = 0; int idx = _predefinedRangeIndexes[k][0]; int end = _predefinedRangeIndexes[k][1]; while (idx <= end) { count += _count.Get(idx++); } rangeCount.Add(k, count); } List<BrowseFacet> facetColl; FacetSpec.FacetSortSpec sortspec = _ospec.OrderBy; if (sortspec == FacetSpec.FacetSortSpec.OrderValueAsc) { facetColl = new List<BrowseFacet>(maxNumOfFacets); for (int k = 0; k < _predefinedRangeIndexes.Length; ++k) { if (rangeCount.Get(k) >= minCount) { BrowseFacet choice = new BrowseFacet(_predefinedRanges.Get(k), rangeCount.Get(k)); facetColl.Add(choice); } if (facetColl.Count >= maxNumOfFacets) break; } } else //if (sortspec == FacetSortSpec.OrderHitsDesc) { IComparatorFactory comparatorFactory; if (sortspec == FacetSpec.FacetSortSpec.OrderHitsDesc) { comparatorFactory = new FacetHitcountComparatorFactory(); } else { comparatorFactory = _ospec.CustomComparatorFactory; } if (comparatorFactory == null) { throw new ArgumentException("facet comparator factory not specified"); } IComparer<int> comparator = comparatorFactory.NewComparator(new RangeFacetCountCollectorFieldAccessor(_predefinedRanges), rangeCount); int forbidden = -1; IntBoundedPriorityQueue pq = new IntBoundedPriorityQueue(comparator, maxNumOfFacets, forbidden); for (int i = 0; i < _predefinedRangeIndexes.Length; ++i) { if (rangeCount.Get(i) >= minCount) pq.Offer(i); } int val; facetColl = new List<BrowseFacet>(); while ((val = pq.Poll()) != forbidden) { BrowseFacet facet = new BrowseFacet(_predefinedRanges.ElementAt(val), rangeCount.Get(val)); facetColl.Insert(0, facet); } } return facetColl; } else { return FacetCountCollector_Fields.EMPTY_FACET_LIST; } } else { return FacetCountCollector_Fields.EMPTY_FACET_LIST; } }
public virtual BigSegmentedArray GetCountDistribution() { BigSegmentedArray dist = null; if (_predefinedRanges != null) { dist = new LazyBigIntArray(_predefinedRanges.Count); int distIdx = 0; for (int i = 0; i < _count.Size(); i++) { int count = _count.Get(i); dist.Add(distIdx++, count); } } return dist; }
public virtual FacetIterator Iterator() { // each range is of the form <lat, lon, radius> LazyBigIntArray rangeCounts = new LazyBigIntArray(_latPredefinedRangeIndexes.Length); for (int i = 0; i < _latCount.Length; ++i) { if (_latCount[i] > 0) { for (int k = 0; k < _latPredefinedRangeIndexes.Length; ++k) { if (i >= _latPredefinedRangeIndexes[k][0] && i <= _latPredefinedRangeIndexes[k][1]) { rangeCounts.Add(k, rangeCounts.Get(k) + _latCount[i]); } } } } return new DefaultFacetIterator(_predefinedRanges, rangeCounts, rangeCounts.Size(), true); }
/// <summary> /// (non-Javadoc) /// see com.browseengine.bobo.facets.FacetCountCollector#getCountDistribution() /// </summary> /// <returns></returns> public virtual BigSegmentedArray GetCountDistribution() { BigSegmentedArray dist = null; if (_latPredefinedRangeIndexes != null) { dist = new LazyBigIntArray(_latPredefinedRangeIndexes.Length); int n = 0; int start; int end; foreach (int[] range in _latPredefinedRangeIndexes) { start = range[0]; end = range[1]; int sum = 0; for (int i = start; i < end; i++) { sum += _latCount[i]; } dist.Add(n++, sum); } } return dist; }