the-algorithm/src/java/com/twitter/search/common/schema/NumericField.java

45 lines
1.5 KiB
Java

package com.twitter.search.common.schema;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.IndexOptions;
/**
* A Lucene numeric field, similar to the LegacyIntField, LegacyLongField, etc. Lucene classes that
* were removed in Lucene 7.0.0.
*/
public final class NumericField extends Field {
private static final FieldType NUMERIC_FIELD_TYPE = new FieldType();
static {
NUMERIC_FIELD_TYPE.setTokenized(true);
NUMERIC_FIELD_TYPE.setOmitNorms(true);
NUMERIC_FIELD_TYPE.setIndexOptions(IndexOptions.DOCS);
NUMERIC_FIELD_TYPE.freeze();
}
/**
* Creates a new integer field with the given name and value.
*/
public static NumericField newIntField(String fieldName, int value) {
NumericField field = new NumericField(fieldName);
field.fieldsData = Integer.valueOf(value);
return field;
}
/**
* Creates a new long field with the given name and value.
*/
public static NumericField newLongField(String fieldName, long value) {
NumericField field = new NumericField(fieldName);
field.fieldsData = Long.valueOf(value);
return field;
}
// We could replace the static methods with constructors, but I think that would make it much
// easier to accidentally use NumericField(String, int) instead of NumericField(String, long),
// for example, leading to hard to debug errors.
private NumericField(String fieldName) {
super(fieldName, NUMERIC_FIELD_TYPE);
}
}