45 lines
1.5 KiB
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);
|
|
}
|
|
}
|