Exemple #1
0
            public override sealed bool Validate(int docid)
            {
                CurrentPointers miss = null;

                RandomAccessDocIdSet @set = m_firsttime.CurrentPointers.DocIdSet;

                if (@set != null && [email protected](docid))
                {
                    miss = m_firsttime.CurrentPointers;
                }
                m_nextTarget = docid + 1;

                if (miss != null)
                {
                    miss.FacetCountCollector.Collect(docid);
                    return(false);
                }
                else
                {
                    foreach (IFacetCountCollector collector in m_countCollectors)
                    {
                        collector.Collect(docid);
                    }
                    return(true);
                }
            }
Exemple #2
0
            ///<summary>This method validates the doc against any multi-select enabled fields. </summary>
            ///<param name="docid"> </param>
            ///<returns>true if all fields matched </returns>
            public override sealed bool Validate(int docid)
            {
                CurrentPointers miss = null;

                for (int i = 0; i < m_numPostFilters; i++)
                {
                    CurrentPointers cur = m_collectors[i].CurrentPointers;
                    int             sid = cur.Doc;

                    if (sid < docid)
                    {
                        sid     = cur.PostDocIDSetIterator.Advance(docid);
                        cur.Doc = sid;
                        if (sid == DocIdSetIterator.NO_MORE_DOCS)
                        {
                            // move this to front so that the call can find the failure faster
                            FacetHitCollector tmp = m_collectors[0];
                            m_collectors[0] = m_collectors[i];
                            m_collectors[i] = tmp;
                        }
                    }

                    if (sid > docid) //mismatch
                    {
                        if (miss != null)
                        {
                            // failed because we already have a mismatch
                            m_nextTarget = (miss.Doc < cur.Doc ? miss.Doc : cur.Doc);
                            return(false);
                        }
                        miss = cur;
                    }
                }

                m_nextTarget = docid + 1;

                if (miss != null)
                {
                    miss.FacetCountCollector.Collect(docid);
                    return(false);
                }
                else
                {
                    foreach (IFacetCountCollector collector in m_countCollectors)
                    {
                        collector.Collect(docid);
                    }
                    return(true);
                }
            }