public override int FetchSec(int targetSec) { SectionSearchQueryPlan node = _subqueries[0]; targetSec = node.FetchSec(targetSec); if (targetSec == SectionSearchQueryPlan.NO_MORE_SECTIONS) { _curSec = SectionSearchQueryPlan.NO_MORE_SECTIONS; return(targetSec); } int i = 1; while (i < _subqueries.Length) { node = _subqueries[i]; if (node.SecId < targetSec) { _curSec = node.FetchSec(targetSec); if (_curSec == SectionSearchQueryPlan.NO_MORE_SECTIONS) { return(_curSec); } if (_curSec > targetSec) { targetSec = _curSec; i = 0; continue; } } i++; } return(_curSec); }
public override int FetchSec(int targetSec) { while (m_curSec < SectionSearchQueryPlan.NO_MORE_SECTIONS) { m_curSec = m_positiveNode.FetchSec(targetSec); if (m_curSec == SectionSearchQueryPlan.NO_MORE_SECTIONS) { break; } targetSec = m_curSec; if (m_negativeNode.DocId < m_curDoc) { if (m_negativeNode.FetchDoc(m_curDoc) == DocIdSetIterator.NO_MORE_DOCS) { break; } } if (m_negativeNode.DocId == m_curDoc && (m_negativeNode.SecId == SectionSearchQueryPlan.NO_MORE_SECTIONS || m_negativeNode.FetchSec(targetSec) > m_curSec)) { break; } } return(m_curSec); }
public override int FetchSec(int targetSec) { if (m_curSec == SectionSearchQueryPlan.NO_MORE_SECTIONS) { return(m_curSec); } if (targetSec <= m_curSec) { targetSec = m_curSec + 1; } SectionSearchQueryPlan node = (SectionSearchQueryPlan)m_pq.Top; while (true) { if (node.DocId == m_curDoc && m_curSec < SectionSearchQueryPlan.NO_MORE_SECTIONS) { if (node.SecId < targetSec) { node.FetchSec(targetSec); node = (SectionSearchQueryPlan)m_pq.UpdateTop(); } else { m_curSec = node.SecId; return(m_curSec); } } else { m_curSec = SectionSearchQueryPlan.NO_MORE_SECTIONS; return(m_curSec); } } }