Lucene++ - a full-featured, c++ search engine
API Documentation

Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
Lucene::OpenBitSetIterator Class Reference

An iterator to iterate over set bits in an OpenBitSet. This is faster than nextSetBit() for iterating over the complete set of bits, especially when the density of the bits set is high. More...

`#include <OpenBitSetIterator.h>`

Inheritance diagram for Lucene::OpenBitSetIterator:

## Public Member Functions

| OpenBitSetIterator (const OpenBitSetPtr &bitSet)
| OpenBitSetIterator (LongArray bits, int32_t numWords)
virtual | ~OpenBitSetIterator ()
virtual String | getClassName ()
boost::shared_ptr< OpenBitSetIterator > | shared_from_this ()
virtual int32_t | nextDoc ()
| Advances to the next document in the set and returns the doc it is currently on, or `NO_MORE_DOCS` if there are no more docs in the set.
virtual int32_t | advance (int32_t target)
| Advances to the first beyond the current whose document number is greater than or equal to target. Returns the current document number or `NO_MORE_DOCS` if there are no more docs in the set.
virtual int32_t | docID ()
| Returns the following:
Public Member Functions inherited from Lucene::DocIdSetIterator
virtual | ~DocIdSetIterator ()
boost::shared_ptr< DocIdSetIterator > | shared_from_this ()
Public Member Functions inherited from Lucene::LuceneObject
virtual | ~LuceneObject ()
virtual void | initialize ()
| Called directly after instantiation to create objects that depend on this object being fully constructed.
virtual LuceneObjectPtr | clone (const LuceneObjectPtr &other=LuceneObjectPtr())
| Return clone of this object.
virtual int32_t | hashCode ()
| Return hash code for this object.
virtual bool | equals (const LuceneObjectPtr &other)
| Return whether two objects are equal.
virtual int32_t | compareTo (const LuceneObjectPtr &other)
| Compare two objects.
virtual String | toString ()
| Returns a string representation of the object.
Public Member Functions inherited from Lucene::LuceneSync
virtual | ~LuceneSync ()
virtual SynchronizePtr | getSync ()
| Return this object synchronize lock.
virtual LuceneSignalPtr | getSignal ()
| Return this object signal.
virtual void | lock (int32_t timeout=0)
| Lock this object using an optional timeout.
virtual void | unlock ()
| Unlock this object.
virtual bool | holdsLock ()
| Returns true if this object is currently locked by current thread.
virtual void | wait (int32_t timeout=0)
| Wait for signal using an optional timeout.
virtual void | notifyAll ()
| Notify all threads waiting for signal.

## Static Public Member Functions

static String | _getClassName ()
Static Public Member Functions inherited from Lucene::DocIdSetIterator
static String | _getClassName ()

## Protected Member Functions

void | shift ()
| 64 bit shifts
Protected Member Functions inherited from Lucene::LuceneObject
| LuceneObject ()

## Protected Attributes

LongArray | arr
int32_t | words
int32_t | i
int64_t | word
int32_t | wordShift
int32_t | indexArray
int32_t | curDocId
Protected Attributes inherited from Lucene::LuceneSync
SynchronizePtr | objectLock
LuceneSignalPtr | objectSignal

## Static Protected Attributes

static const int32_t | bitlist []
| The General Idea: instead of having an array per byte that has the offsets of the next set bit, that array could be packed inside a 32 bit integer (8 4 bit numbers). That should be faster than accessing an array for each index, and the total array size is kept smaller (256*sizeof(int32_t))=1K.

## Additional Inherited Members

Static Public Attributes inherited from Lucene::DocIdSetIterator
static const int32_t | NO_MORE_DOCS
| When returned by `nextDoc()`, `advance(int)` and `docID()` it means there are no more docs in the iterator.

## Detailed Description

An iterator to iterate over set bits in an OpenBitSet. This is faster than nextSetBit() for iterating over the complete set of bits, especially when the density of the bits set is high.

## Constructor & Destructor Documentation

## ◆ OpenBitSetIterator() [1/2]

Lucene::OpenBitSetIterator::OpenBitSetIterator | ( | const OpenBitSetPtr & | bitSet | ) |

Referenced by _getClassName().

## ◆ OpenBitSetIterator() [2/2]

Lucene::OpenBitSetIterator::OpenBitSetIterator | ( | LongArray | bits,
|  | int32_t | numWords )

## ◆ ~OpenBitSetIterator()

virtual Lucene::OpenBitSetIterator::~OpenBitSetIterator | ( |  | ) |

virtual

## Member Function Documentation

## ◆ _getClassName()

String Lucene::OpenBitSetIterator::_getClassName | ( |  | ) |

inline static

References OpenBitSetIterator().

## ◆ advance()

virtual int32_t Lucene::OpenBitSetIterator::advance | ( | int32_t | target | ) |

virtual

Advances to the first beyond the current whose document number is greater than or equal to target. Returns the current document number or `NO_MORE_DOCS` if there are no more docs in the set.

Behaves as if written:

    int32_t advance(int32_t target)
    {
        int32_t doc;
        while ((doc = nextDoc()) < target)
        { }
        return doc;
    }

Some implementations are considerably more efficient than that.

NOTE: certain implementations may return a different value (each time) if called several times in a row with the same target.

NOTE: this method may be called with {@value NO_MORE_DOCS} for efficiency by some Scorers. If your implementation cannot efficiently determine that it should exhaust, it is recommended that you check for that value in each call to this method.

NOTE: after the iterator has exhausted you should not call this method, as it may result in unpredicted behaviour.

Implements Lucene::DocIdSetIterator.

## ◆ docID()

virtual int32_t Lucene::OpenBitSetIterator::docID | ( |  | ) |

virtual

Returns the following:

- -1 or `NO_MORE_DOCS` if `nextDoc()` or `advance(int)` were not called yet.
- `NO_MORE_DOCS` if the iterator has exhausted.
- Otherwise it should return the doc ID it is currently on.

Implements Lucene::DocIdSetIterator.

## ◆ getClassName()

virtual String Lucene::OpenBitSetIterator::getClassName | ( |  | ) |

inline virtual

Reimplemented from Lucene::DocIdSetIterator.

## ◆ nextDoc()

virtual int32_t Lucene::OpenBitSetIterator::nextDoc | ( |  | ) |

virtual

Advances to the next document in the set and returns the doc it is currently on, or `NO_MORE_DOCS` if there are no more docs in the set.

NOTE: after the iterator has exhausted you should not call this method, as it may result in unpredicted behaviour.

Implements Lucene::DocIdSetIterator.

## ◆ shared_from_this()

boost::shared_ptr< OpenBitSetIterator > Lucene::OpenBitSetIterator::shared_from_this | ( |  | ) |

inline

## ◆ shift()

void Lucene::OpenBitSetIterator::shift | ( |  | ) |

protected

64 bit shifts

## Field Documentation

## ◆ arr

LongArray Lucene::OpenBitSetIterator::arr

protected

## ◆ bitlist

const int32_t Lucene::OpenBitSetIterator::bitlist[]

static protected

The General Idea: instead of having an array per byte that has the offsets of the next set bit, that array could be packed inside a 32 bit integer (8 4 bit numbers). That should be faster than accessing an array for each index, and the total array size is kept smaller (256*sizeof(int32_t))=1K.

## ◆ curDocId

int32_t Lucene::OpenBitSetIterator::curDocId

protected

## ◆ i

int32_t Lucene::OpenBitSetIterator::i

protected

## ◆ indexArray

int32_t Lucene::OpenBitSetIterator::indexArray

protected

## ◆ word

int64_t Lucene::OpenBitSetIterator::word

protected

## ◆ words

int32_t Lucene::OpenBitSetIterator::words

protected

## ◆ wordShift

int32_t Lucene::OpenBitSetIterator::wordShift

protected

The documentation for this class was generated from the following file:

- OpenBitSetIterator.h

clucene.sourceforge.net