Expert: This class provides a {@link TokenStream}for indexing numeric values that can be used by {@link NumericRangeQuery} or {@link NumericRangeFilter}.
Note that for simple usage, {@link NumericField} isrecommended. {@link NumericField} disables norms andterm freqs, as they are not usually needed during searching. If you need to change these settings, you should use this class.
See {@link NumericField} for capabilities of fieldsindexed numerically.
Here's an example usage, for an int
field:
Field field = new Field(name, new NumericTokenStream(precisionStep).setIntValue(value)); field.setOmitNorms(true); field.setOmitTermFreqAndPositions(true); document.add(field);
For optimal performance, re-use the TokenStream and Field instance for more than one document:
NumericTokenStream stream = new NumericTokenStream(precisionStep); Field field = new Field(name, stream); field.setOmitNorms(true); field.setOmitTermFreqAndPositions(true); Document document = new Document(); document.add(field); for(all documents) { stream.setIntValue(value) writer.addDocument(document); }
This stream is not intended to be used in analyzers; it's more for iterating the different precisions during indexing a specific numeric value.
NOTE: as token streams are only consumed once the document is added to the index, if you index more than one numeric field, use a separate NumericTokenStream
instance for each.
See {@link NumericRangeQuery} for more details on theprecisionStep
parameter as well as how numeric fields work under the hood.
NOTE: This API is experimental and might change in incompatible ways in the next release.
@since 2.9