diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index a141bbea6940..e8816607773f 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -129,10 +129,12 @@ Optimizations * GITHUB#14193: Add Automata.makeCharSet() and makeCharClass() that return minimal DFA for lists of characters and ranges. Use them in RegExp parser. (Robert Muir) -* GITHUB#14176: Reduce when visiting bpv24-encoded doc ids in BKD leaves. (Guo Feng) +* GITHUB#14176: Reduce virtual call when visiting bpv24-encoded doc ids in BKD leaves. (Guo Feng) * GITHUB#14269: Implement #intoBitset for DocIdSetIterator#all and DocIdSetIterator#range. (Guo Feng) +* GITHUB#14272: Use DocIdSetIterator#range for continuous-id BKD leaves. (Guo Feng) + Bug Fixes --------------------- diff --git a/lucene/core/src/java/org/apache/lucene/util/bkd/DocIdsWriter.java b/lucene/core/src/java/org/apache/lucene/util/bkd/DocIdsWriter.java index 805d7079b981..d188e1881d5b 100644 --- a/lucene/core/src/java/org/apache/lucene/util/bkd/DocIdsWriter.java +++ b/lucene/core/src/java/org/apache/lucene/util/bkd/DocIdsWriter.java @@ -324,12 +324,7 @@ private void readBitSet(IndexInput in, int count, IntersectVisitor visitor) thro private static void readContinuousIds(IndexInput in, int count, IntersectVisitor visitor) throws IOException { int start = in.readVInt(); - int extra = start & 63; - int offset = start - extra; - int numBits = count + extra; - FixedBitSet bitSet = new FixedBitSet(numBits); - bitSet.set(extra, numBits); - visitor.visit(new DocBaseBitSetIterator(bitSet, count, offset)); + visitor.visit(DocIdSetIterator.range(start, start + count)); } private static void readLegacyDeltaVInts(IndexInput in, int count, IntersectVisitor visitor)