public sealed override int Advance(int targetId) { if (_doc < targetId) { _doc = targetId - 1; } float x = _targetX; float xu = x + _delta; float xl = x - _delta; float y = _targetY; float yu = y + _delta; float yl = y - _delta; float z = _targetZ; float zu = z + _delta; float zl = z - _delta; int docid = _doc; while (docid < _maxDoc) { docid++; float docX = _xvals.Get(docid); if (docX > xu || docX < xl) { continue; } float docY = _yvals.Get(docid); if (docY > yu || docY < yl) { continue; } float docZ = _zvals.Get(docid); if (docZ > zu || docZ < zl) { continue; } if (GeoFacetFilter.InCircle(docX, docY, docZ, _targetX, _targetY, _targetZ, _radius)) { _doc = docid; return(_doc); } } _doc = DocIdSetIterator.NO_MORE_DOCS; return(_doc); }
public sealed override int Advance(int targetId) { if (m_doc < targetId) { m_doc = targetId - 1; } float x = m_targetX; float xu = x + m_delta; float xl = x - m_delta; float y = m_targetY; float yu = y + m_delta; float yl = y - m_delta; float z = m_targetZ; float zu = z + m_delta; float zl = z - m_delta; int docid = m_doc; while (++docid < m_maxDoc) { float docX = m_xvals.Get(docid); if (docX > xu || docX < xl) { continue; } float docY = m_yvals.Get(docid); if (docY > yu || docY < yl) { continue; } float docZ = m_zvals.Get(docid); if (docZ > zu || docZ < zl) { continue; } if (GeoFacetFilter.InCircle(docX, docY, docZ, m_targetX, m_targetY, m_targetZ, m_radius)) { m_doc = docid; return(m_doc); } } m_doc = DocIdSetIterator.NO_MORE_DOCS; return(m_doc); }