Remove unnecessary bit conversion for IndexSorter (#13320)

This commit is contained in:
panguixin 2024-05-14 21:05:51 +08:00 committed by GitHub
parent 3aa25baac7
commit 37837133c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 22 deletions

View File

@ -266,23 +266,16 @@ public interface IndexSorter {
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;
@ -336,23 +329,17 @@ public interface IndexSorter {
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;