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); } }
///<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); } }