use static TL for common numeric precision values

This commit is contained in:
Shay Banon 2013-09-15 01:40:35 +02:00
parent 1c921aebe5
commit 4a97af3cd4
1 changed files with 31 additions and 2 deletions

View File

@ -126,6 +126,27 @@ public abstract class NumberFieldMapper<T extends Number> extends AbstractFieldM
}
};
private static ThreadLocal<NumericTokenStream> tokenStream4 = new ThreadLocal<NumericTokenStream>() {
@Override
protected NumericTokenStream initialValue() {
return new NumericTokenStream(4);
}
};
private static ThreadLocal<NumericTokenStream> tokenStream8 = new ThreadLocal<NumericTokenStream>() {
@Override
protected NumericTokenStream initialValue() {
return new NumericTokenStream(8);
}
};
private static ThreadLocal<NumericTokenStream> tokenStreamMax = new ThreadLocal<NumericTokenStream>() {
@Override
protected NumericTokenStream initialValue() {
return new NumericTokenStream(Integer.MAX_VALUE);
}
};
protected NumberFieldMapper(Names names, int precisionStep, float boost, FieldType fieldType,
Explicit<Boolean> ignoreMalformed, NamedAnalyzer indexAnalyzer,
NamedAnalyzer searchAnalyzer, PostingsFormatProvider provider, SimilarityProvider similarity,
@ -248,10 +269,18 @@ public abstract class NumberFieldMapper<T extends Number> extends AbstractFieldM
@Override
public void close() {
tokenStream.remove();
}
protected NumericTokenStream popCachedStream() {
if (precisionStep == 4) {
return tokenStream4.get();
}
if (precisionStep == 8) {
return tokenStream8.get();
}
if (precisionStep == Integer.MAX_VALUE) {
return tokenStreamMax.get();
}
return tokenStream.get();
}
@ -288,7 +317,7 @@ public abstract class NumberFieldMapper<T extends Number> extends AbstractFieldM
builder.field("ignore_malformed", ignoreMalformed.value());
}
}
@Override
public boolean isNumeric() {
return true;