Skip to content

Commit

Permalink
Remove unnecessary bit conversion for IndexSorter (#13320)
Browse files Browse the repository at this point in the history
  • Loading branch information
bugmakerrrrrr authored and jpountz committed May 14, 2024
1 parent 3cf2424 commit b1470b9
Showing 1 changed file with 9 additions and 22 deletions.
31 changes: 9 additions & 22 deletions lucene/core/src/java/org/apache/lucene/index/IndexSorter.java
Original file line number Diff line number Diff line change
Expand Up @@ -266,23 +266,16 @@ public FloatSorter(
public ComparableProvider[] getComparableProviders(List<? extends LeafReader> readers)
throws IOException {
ComparableProvider[] providers = new ComparableProvider[readers.size()];
final float missingValue;
if (this.missingValue != null) {
missingValue = this.missingValue;
} else {
missingValue = 0.0f;
}
final int missValueBits = Float.floatToIntBits(missingValue != null ? missingValue : 0.0f);

for (int readerIndex = 0; readerIndex < readers.size(); readerIndex++) {
final NumericDocValues values = valuesProvider.get(readers.get(readerIndex));

providers[readerIndex] =
docID -> {
float value = missingValue;
if (values.advanceExact(docID)) {
value = Float.intBitsToFloat((int) values.longValue());
}
return NumericUtils.floatToSortableInt(value);
final int valueBits =
values.advanceExact(docID) ? (int) values.longValue() : missValueBits;
return NumericUtils.sortableFloatBits(valueBits);
};
}
return providers;
Expand Down Expand Up @@ -336,23 +329,17 @@ public DoubleSorter(
public ComparableProvider[] getComparableProviders(List<? extends LeafReader> readers)
throws IOException {
ComparableProvider[] providers = new ComparableProvider[readers.size()];
final double missingValue;
if (this.missingValue != null) {
missingValue = this.missingValue;
} else {
missingValue = 0.0f;
}
final long missingValueBits =
Double.doubleToLongBits(missingValue != null ? missingValue : 0.0f);

for (int readerIndex = 0; readerIndex < readers.size(); readerIndex++) {
final NumericDocValues values = valuesProvider.get(readers.get(readerIndex));

providers[readerIndex] =
docID -> {
double value = missingValue;
if (values.advanceExact(docID)) {
value = Double.longBitsToDouble(values.longValue());
}
return NumericUtils.doubleToSortableLong(value);
final long valueBits =
values.advanceExact(docID) ? values.longValue() : missingValueBits;
return NumericUtils.sortableDoubleBits(valueBits);
};
}
return providers;
Expand Down

0 comments on commit b1470b9

Please sign in to comment.