public override sealed bool Validate(int docid) { FacetHitCollector.CurrentPointers miss = null; RandomAccessDocIdSet @set = _firsttime._currentPointers.DocIdSet; if (@set != null && [email protected](docid)) { miss = _firsttime._currentPointers; } _nextTarget = docid + 1; if (miss != null) { miss.FacetCountCollector.Collect(docid); return(false); } else { foreach (IFacetCountCollector collector in _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) { FacetHitCollector.CurrentPointers miss = null; for (int i = 0; i < _numPostFilters; i++) { FacetHitCollector.CurrentPointers cur = _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 = _collectors[0]; _collectors[0] = _collectors[i]; _collectors[i] = tmp; } } if (sid > docid) //mismatch { if (miss != null) { // failed because we already have a mismatch _nextTarget = (miss.Doc < cur.Doc ? miss.Doc : cur.Doc); return(false); } miss = cur; } } _nextTarget = docid + 1; if (miss != null) { miss.FacetCountCollector.Collect(docid); return(false); } else { foreach (IFacetCountCollector collector in _countCollectors) { collector.Collect(docid); } return(true); } }