コード例 #1
0
            public override IFacetCountCollector GetFacetCountCollector(BoboSegmentReader reader, int docBase)
            {
                FacetDataCache       dataCache     = (FacetDataCache)reader.GetFacetData(m_dataHandlerName);
                IFacetCountCollector baseCollector = m_baseCollectorSrc.GetFacetCountCollector(reader, docBase);

                return(new HistogramCollector(m_name, baseCollector, dataCache, m_ospec, m_start, m_end, m_unit));
            }
コード例 #2
0
            public override IFacetCountCollector GetFacetCountCollector(BoboIndexReader reader, int docBase)
            {
                FacetDataCache       dataCache     = (FacetDataCache)reader.GetFacetData(_dataHandlerName);
                IFacetCountCollector baseCollector = _baseCollectorSrc.GetFacetCountCollector(reader, docBase);

                return(new HistogramCollector(_name, baseCollector, dataCache, _ospec, _start, _end, _unit));
            }
コード例 #3
0
 public HistogramCollector(string facetName, IFacetCountCollector baseCollector, FacetDataCache dataCache, FacetSpec ospec, T start, T end, T unit)
 {
     m_facetName     = facetName;
     m_baseCollector = baseCollector;
     m_valArray      = dataCache.ValArray;
     m_ospec         = ospec;
     m_isAggregated  = false;
     m_start         = start;
     m_end           = end;
     m_unit          = unit;
     m_count         = new LazyBigInt32Array(CountArraySize());
 }
コード例 #4
0
        public override void SetNextReader(AtomicReaderContext context)
        {
            AtomicReader reader = context.AtomicReader;

            if (!(reader is BoboSegmentReader))
            {
                throw new ArgumentException("reader must be a BoboIndexReader");
            }
            m_currentReader = (BoboSegmentReader)reader;
            int docBase = context.DocBase;

            m_currentComparer = m_compSource.GetComparer(m_currentReader, docBase);
            m_currentQueue    = new DocIDPriorityQueue(m_currentComparer, m_numHits, docBase);
            if (m_groupBy != null)
            {
                if (m_facetCountCollectorMulti != null)  // _facetCountCollectorMulti.Length >= 1
                {
                    for (int i = 0; i < m_facetCountCollectorMulti.Length; ++i)
                    {
                        m_facetCountCollectorMulti[i] = m_groupByMulti[i].GetFacetCountCollectorSource(null, null, true).GetFacetCountCollector(m_currentReader, docBase);
                    }
                    //if (_facetCountCollector != null)
                    //    collectTotalGroups();
                    m_facetCountCollector = m_facetCountCollectorMulti[0];
                    if (m_facetAccessibleLists != null)
                    {
                        for (int i = 0; i < m_facetCountCollectorMulti.Length; ++i)
                        {
                            m_facetAccessibleLists[i].Add(m_facetCountCollectorMulti[i]);
                        }
                    }
                }
                if (m_currentValueDocMaps != null)
                {
                    m_currentValueDocMaps.Clear();
                }

                // NightOwl888: The _collectDocIdCache setting seems to put arrays into
                // memory, but then do nothing with the arrays. Seems wasteful and unnecessary.
                //if (contextList != null)
                //{
                //    _currentContext = new CollectorContext(_currentReader, docBase, _currentComparer);
                //    contextList.Add(_currentContext);
                //}
            }
            MyScoreDoc myScoreDoc = (MyScoreDoc)m_tmpScoreDoc;

            myScoreDoc.m_queue     = m_currentQueue;
            myScoreDoc.m_reader    = m_currentReader;
            myScoreDoc.m_sortValue = null;
            m_pqList.Add(m_currentQueue);
            m_queueFull = false;
        }
コード例 #5
0
            public override IFacetCountCollector GetFacetCountCollector(BoboSegmentReader reader, int docBase)
            {
                IFacetCountCollector defaultCollector = m_dependOnFacetHandler.GetFacetCountCollectorSource(m_sel, m_ospec).GetFacetCountCollector(reader, docBase);

                if (defaultCollector is DefaultFacetCountCollector)
                {
                    return(new BucketFacetCountCollector(m_name, (DefaultFacetCountCollector)defaultCollector, m_ospec, m_predefinedBuckets, reader.NumDocs));
                }
                else
                {
                    throw new InvalidOperationException("dependent facet handler must build DefaultFacetCountCollector");
                }
            }
コード例 #6
0
            public virtual void SetNextReader(BoboIndexReader reader, int docBase)
            {
                List <IFacetCountCollector> collectorList = new List <IFacetCountCollector>();

                SortPostCollectors(reader);
                for (int i = 0; i < _collectors.Length; ++i)
                {
                    _collectors[i].SetNextReader(reader, docBase);
                    IFacetCountCollector collector = _collectors[i]._currentPointers.FacetCountCollector;
                    if (collector != null)
                    {
                        collectorList.Add(collector);
                    }
                }
                _countCollectors = collectorList.ToArray();
            }
コード例 #7
0
 public void SetNextReader(BoboSegmentReader reader, int docBase)
 {
     if (CollectAllSource != null)
     {
         IFacetCountCollector collector = CollectAllSource.GetFacetCountCollector(reader, docBase);
         CollectAllCollectorList.Add(collector);
         collector.CollectAll();
     }
     else
     {
         if (Filter != null)
         {
             CurrentPointers.DocIdSet             = Filter.GetRandomAccessDocIdSet(reader);
             CurrentPointers.PostDocIDSetIterator = CurrentPointers.DocIdSet.GetIterator();
             CurrentPointers.Doc = CurrentPointers.PostDocIDSetIterator.NextDoc();
         }
         if (FacetCountCollectorSource != null)
         {
             CurrentPointers.FacetCountCollector = FacetCountCollectorSource.GetFacetCountCollector(reader, docBase);
             CountCollectorList.Add(CurrentPointers.FacetCountCollector);
         }
     }
 }
コード例 #8
0
 public void SetNextReader(BoboIndexReader reader, int docBase)
 {
     if (_collectAllSource != null)
     {
         IFacetCountCollector collector = _collectAllSource.GetFacetCountCollector(reader, docBase);
         _collectAllCollectorList.Add(collector);
         collector.CollectAll();
     }
     else
     {
         if (_filter != null)
         {
             _currentPointers.DocIdSet             = _filter.GetRandomAccessDocIdSet(reader);
             _currentPointers.PostDocIDSetIterator = _currentPointers.DocIdSet.Iterator();
             _currentPointers.Doc = _currentPointers.PostDocIDSetIterator.NextDoc();
         }
         if (_facetCountCollectorSource != null)
         {
             _currentPointers.FacetCountCollector = _facetCountCollectorSource.GetFacetCountCollector(reader, docBase);
             _countCollectorList.Add(_currentPointers.FacetCountCollector);
         }
     }
 }
コード例 #9
0
 public virtual FacetCountStatistics generateStatistic(IFacetCountCollector countHitCollector, int n)
 {
     return generateStatistic(countHitCollector.GetCountDistribution(), n);
 }
コード例 #10
0
 public virtual FacetCountStatistics GenerateStatistic(IFacetCountCollector countHitCollector, int n)
 {
     return(GenerateStatistic(BigIntArray.ToArray(countHitCollector.GetCountDistribution()), n));
 }
コード例 #11
0
 public DefaultFacetValidator(FacetHitCollector[] collectors, IFacetCountCollector[] countCollectors, int numPostFilters)
     : base(collectors, countCollectors, numPostFilters)
 {
 }
コード例 #12
0
 protected FacetValidator(FacetHitCollector[] collectors, IFacetCountCollector[] countCollectors, int numPostFilters)
 {
     Collectors = collectors;
     CountCollectors = countCollectors;
     NumPostFilters = numPostFilters;
 }
コード例 #13
0
        protected FacetValidator CreateFacetValidator()
        {
            FacetHitCollector[] collectors = new FacetHitCollector[facetCollectors.Count];
            IFacetCountCollector[] countCollectors = new IFacetCountCollector[collectors.Length];
            int numPostFilters;
            int i = 0;
            int j = collectors.Length;

            foreach (FacetHitCollector facetCollector in facetCollectors)
            {
                if (facetCollector.PostDocIDSetIterator != null)
                {
                    facetCollector.More = facetCollector.PostDocIDSetIterator.NextDoc()!=DocIdSetIterator.NO_MORE_DOCS;
                    facetCollector.Doc = (facetCollector.More ? facetCollector.PostDocIDSetIterator.DocID() : int.MaxValue);
                    collectors[i] = facetCollector;
                    countCollectors[i] = facetCollector.FacetCountCollector;
                    i++;
                }
                else
                {
                    j--;
                    collectors[j] = facetCollector;
                    countCollectors[j] = facetCollector.FacetCountCollector;
                }
            }
            numPostFilters = i;

            if (numPostFilters == 0)
            {
                return new NoNeedFacetValidator(collectors, countCollectors, numPostFilters);
            }
            else if (numPostFilters == 1)
            {
                return new OnePostFilterFacetValidator(collectors, countCollectors, numPostFilters);
            }
            else
            {
                return new DefaultFacetValidator(collectors, countCollectors, numPostFilters);
            }
        }
コード例 #14
0
 internal NoNeedFacetValidator(FacetHitCollector[] collectors, IFacetCountCollector[] countCollectors, int numPostFilters)
     : base(collectors, countCollectors, numPostFilters)
 {
 }
コード例 #15
0
 internal OnePostFilterFacetValidator(FacetHitCollector[] collectors, IFacetCountCollector[] countCollectors, int numPostFilters)
     : base(collectors, countCollectors, numPostFilters)
 {
     firsttime = Collectors[0];
 }
コード例 #16
0
 public virtual FacetCountStatistics GenerateStatistic(IFacetCountCollector countHitCollector, int n)
 {
     return GenerateStatistic(BigIntArray.ToArray(countHitCollector.GetCountDistribution()), n);
 }