Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-875

Consolidate Solr's and Lucene's OpenBitSet classes

    Details

    • Type: Task
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      Currently there are two versions of OpenBitSet and BitUtil in Solr and Lucene.

      We should only have one version of these classes in Lucene, that Solr should use.

      Tasks here:

      • Merge different versions into Lucene
      • Make Solr classes use/extend the classes in Lucene (we need to keep the Solr ones for backwards-compatibility)
      • Deprecate the classes in Solr
      • Change all references in Solr to use the classes in Lucene

      One difficulty here is Solr's BitSetIterator vs. Lucene's OpenBitSetIterator. Both have a next() method, however one returns an int (BitSetIterator), the other one returns a boolean and offers a doc() method to get the doc id. So I can't make BitSetIterator extend OpenBitSetIterator. There are not many places in Solr's core that use BitSetIterator, so we could simply change e.g. search/BitDocSet.java to use OpenBitSetIterator. This would however require to change the call to next() into two calls to next() and doc(). I wonder if this would be a noticeable performance hit?

      We could of course also leave both iterators and only merge OpenBitSet and BitUtil, but I'd prefer to only have one iterator, because they basically do exactly the same.

        Attachments

        1. solr-875.patch
          52 kB
          Michael Busch

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                michaelbusch Michael Busch
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: