LUCENE-9395: ConstantValuesSource now shares a single DoubleValues instance across all segments

This commit is contained in:
Mike McCandless 2020-07-30 08:53:44 -04:00
parent 7d5b617973
commit d894a7e8d7
2 changed files with 16 additions and 12 deletions

View File

@ -180,7 +180,9 @@ Improvements
Optimizations
---------------------
(No changes)
* LUCENE-9395: ConstantValuesSource now shares a single DoubleValues
instance across all segments (Tony Xu)
Bug Fixes
---------------------

View File

@ -268,21 +268,12 @@ public abstract class DoubleValuesSource implements SegmentCacheable {
private static class ConstantValuesSource extends DoubleValuesSource {
private final DoubleValues doubleValues;
private final double value;
private ConstantValuesSource(double value) {
this.value = value;
}
@Override
public DoubleValuesSource rewrite(IndexSearcher searcher) {
return this;
}
@Override
public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException {
return new DoubleValues() {
this.doubleValues = new DoubleValues() {
@Override
public double doubleValue() throws IOException {
return value;
@ -295,6 +286,17 @@ public abstract class DoubleValuesSource implements SegmentCacheable {
};
}
@Override
public DoubleValuesSource rewrite(IndexSearcher searcher) {
return this;
}
@Override
public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException {
return doubleValues;
}
@Override
public boolean needsScores() {
return false;