public override double NextDouble() { if (!HasNext()) { throw new IndexOutOfRangeException("No more facets in this iteration"); } DoubleIteratorNode node = m_queue.Top; m_facet = node.CurFacet; double next = TermDoubleList.VALUE_MISSING; m_count = 0; while (HasNext()) { node = m_queue.Top; next = node.CurFacet; if ((next != TermDoubleList.VALUE_MISSING) && (next != m_facet)) { return(m_facet); } m_count += node.CurFacetCount; if (node.Fetch(1)) { m_queue.UpdateTop(); } else { m_queue.Pop(); } } return(TermDoubleList.VALUE_MISSING); }
/// <summary> /// (non-Javadoc) /// see com.browseengine.bobo.api.FacetIterator#next() /// </summary> /// <returns></returns> public override string Next() { if (!HasNext()) { throw new IndexOutOfRangeException("No more facets in this iteration"); } DoubleIteratorNode node = _queue.Top(); _facet = node.CurFacet; double next = TermDoubleList.VALUE_MISSING; count = 0; while (HasNext()) { node = _queue.Top(); next = node.CurFacet; if ((next != TermDoubleList.VALUE_MISSING) && (next != _facet)) { return(Format(_facet)); } count += node.CurFacetCount; if (node.Fetch(1)) { _queue.UpdateTop(); } else { _queue.Pop(); } } return(null); }
/// <summary> /// This version of the next() method applies the minHits from the facet spec /// before returning the facet and its hitcount /// </summary> /// <param name="minHits">the minHits from the facet spec for CombinedFacetAccessible</param> /// <returns>The next facet that obeys the minHits</returns> public override string Next(int minHits) { int qsize = m_queue.Count; if (qsize == 0) { m_facet = TermDoubleList.VALUE_MISSING; m_count = 0; return(null); } DoubleIteratorNode node = m_queue.Top; m_facet = node.CurFacet; m_count = node.CurFacetCount; while (true) { if (node.Fetch(minHits)) { node = m_queue.UpdateTop(); } else { m_queue.Pop(); if (--qsize > 0) { node = m_queue.Pop(); } else { // we reached the end. check if this facet obeys the minHits if (m_count < minHits) { m_facet = TermDoubleList.VALUE_MISSING; m_count = 0; return(null); } break; } } double next = node.CurFacet; if (next != m_facet) { // check if this facet obeys the minHits if (m_count >= minHits) { break; } // else, continue iterating to the next facet m_facet = next; m_count = node.CurFacetCount; } else { m_count += node.CurFacetCount; } } return(Format(m_facet)); }
public override double NextDouble(int minHits) { int qsize = _queue.Size(); if (qsize == 0) { _facet = TermDoubleList.VALUE_MISSING; count = 0; return(TermDoubleList.VALUE_MISSING); } DoubleIteratorNode node = _queue.Top(); _facet = node.CurFacet; count = node.CurFacetCount; while (true) { if (node.Fetch(minHits)) { node = _queue.UpdateTop(); } else { _queue.Pop(); if (--qsize > 0) { node = _queue.Top(); } else { // we reached the end. check if this facet obeys the minHits if (count < minHits) { _facet = TermDoubleList.VALUE_MISSING; count = 0; } break; } } double next = node.CurFacet; if (next != _facet) { // check if this facet obeys the minHits if (count >= minHits) { break; } // else, continue iterating to the next facet _facet = next; count = node.CurFacetCount; } else { count += node.CurFacetCount; } } return(_facet); }
public CombinedDoubleFacetIterator(IList <DoubleFacetIterator> iterators) : this(iterators.Count) { m_iterators = iterators; foreach (DoubleFacetIterator iterator in iterators) { DoubleIteratorNode node = new DoubleIteratorNode(iterator); if (node.Fetch(1)) { m_queue.Add(node); } } m_facet = TermDoubleList.VALUE_MISSING; m_count = 0; }
public CombinedDoubleFacetIterator(IList<DoubleFacetIterator> iterators, int minHits) : this(iterators.Count) { _iterators = iterators; foreach (DoubleFacetIterator iterator in iterators) { DoubleIteratorNode node = new DoubleIteratorNode(iterator); if (node.Fetch(minHits)) _queue.Add(node); } _facet = TermDoubleList.VALUE_MISSING; count = 0; }