org.apache.solr.search

Class HashDocSet

  • All Implemented Interfaces:
    Closeable, AutoCloseable, Accountable, DocSet


    public final class HashDocSet
    extends Object
    HashDocSet represents an unordered set of Lucene Document Ids using a primitive int hash table. It can be a better choice if there are few docs in the set because it takes up less memory and is faster to iterate and take set intersections.
    Since:
    solr 0.9
    • Constructor Detail

      • HashDocSet

        public HashDocSet(int[] docs,
                          int offset,
                          int len)
        Create a HashDocSet from a list of *unique* ids
      • HashDocSet

        public HashDocSet(int[] docs,
                          int offset,
                          int len,
                          float inverseLoadFactor)
        Create a HashDocSet from a list of *unique* ids
    • Method Detail

      • exists

        public boolean exists(int doc)
        Description copied from interface: DocSet
        Returns true if a document is in the DocSet.
      • size

        public int size()
        Description copied from interface: DocSet
        Returns the number of documents in the set.
      • iterator

        public DocIterator iterator()
        Description copied from interface: DocSet
        Returns an iterator that may be used to iterate over all of the documents in the set.

        The order of the documents returned by this iterator is non-deterministic, and any scoring information is meaningless

      • intersection

        public DocSet intersection(DocSet other)
        Description copied from interface: DocSet
        Returns the intersection of this set with another set. Neither set is modified - a new DocSet is created and returned.
        Specified by:
        intersection in interface DocSet
        Returns:
        a DocSet representing the intersection
      • intersectionSize

        public int intersectionSize(DocSet other)
        Description copied from interface: DocSet
        Returns the number of documents of the intersection of this set with another set. May be more efficient than actually creating the intersection and then getting its size.
        Specified by:
        intersectionSize in interface DocSet
      • intersects

        public boolean intersects(DocSet other)
        Description copied from interface: DocSet
        Returns true if these sets have any elements in common
        Specified by:
        intersects in interface DocSet
      • andNot

        public DocSet andNot(DocSet other)
        Description copied from interface: DocSet
        Returns the documents in this set that are not in the other set. Neither set is modified - a new DocSet is created and returned.
        Specified by:
        andNot in interface DocSet
        Returns:
        a DocSet representing this AND NOT other
      • union

        public DocSet union(DocSet other)
        Description copied from interface: DocSet
        Returns the union of this set with another set. Neither set is modified - a new DocSet is created and returned.
        Specified by:
        union in interface DocSet
        Returns:
        a DocSet representing the union
      • ramBytesUsed

        public long ramBytesUsed()
        Description copied from interface: Accountable
        Return the memory usage of this object in bytes. Negative values are illegal.
      • add

        public void add(int doc)
        Description copied from interface: DocSet
        Adds the specified document if it is not currently in the DocSet (optional operation).
        Specified by:
        add in interface DocSet
        Throws:
        SolrException - Base implementation does not allow modifications
        See Also:
        DocSet.addUnique(int)
      • addUnique

        public void addUnique(int doc)
        Description copied from interface: DocSet
        Adds a document the caller knows is not currently in the DocSet (optional operation).

        This method may be faster then add(doc) in some implementations provided the caller is certain of the precondition.

        Specified by:
        addUnique in interface DocSet
        Throws:
        SolrException - Base implementation does not allow modifications
        See Also:
        DocSet.add(int)
      • getBits

        protected FixedBitSet getBits()
        Return a FixedBitSet with a bit set for every document in this DocSet. The default implementation iterates on all docs and sets the relevant bits. You should override if you can provide a more efficient implementation.
      • unionSize

        public int unionSize(DocSet other)
        Description copied from interface: DocSet
        Returns the number of documents of the union of this set with another set. May be more efficient than actually creating the union and then getting its size.
        Specified by:
        unionSize in interface DocSet
      • andNotSize

        public int andNotSize(DocSet other)
        Description copied from interface: DocSet
        Returns the number of documents in this set that are not in the other set.
        Specified by:
        andNotSize in interface DocSet
      • getTopFilter

        public Filter getTopFilter()
        Description copied from interface: DocSet
        Returns a Filter for use in Lucene search methods, assuming this DocSet was generated from the top-level MultiReader that the Lucene search methods will be invoked with.
        Specified by:
        getTopFilter in interface DocSet
      • addAllTo

        public void addAllTo(DocSet target)
        Description copied from interface: DocSet
        Adds all the docs from this set to the target set. The target should be sized large enough to accommodate all of the documents before calling this method.
        Specified by:
        addAllTo in interface DocSet