Class SingleField
Field that indexes
document.Add(new SingleField(name, 6.0F, Field.Store.NO));
For optimal performance, re-use the SingleField and
Document instance for more than one document:
FloatField field = new SingleField(name, 0.0F, Field.Store.NO);
Document document = new Document();
document.Add(field);
for (all documents)
{
...
field.SetSingleValue(value)
writer.AddDocument(document);
...
}
See also Int32Field, Int64Field,
DoubleField.
To perform range querying or filtering against a SingleField, use NumericRangeQuery<T> or NumericRangeFilter<T>. To sort according to a SingleField, use the normal numeric sort types, eg SINGLE. SingleField values can also be loaded directly from IFieldCache.
You may add the same field name as an SingleField to the same document more than once. Range querying and filtering will be the logical OR of all values; so a range query will hit all documents that have at least one value in the range. However sort behavior is not defined. If you need to sort, you should separately index a single-valued SingleField.
A SingleField will consume somewhat more disk space in the index than an ordinary single-valued field. However, for a typical index that includes substantial textual content per document, this increase will likely be in the noise.
Within Lucene, each numeric value is indexed as a
trie structure, where each term is logically
assigned to larger and larger pre-defined brackets (which
are simply lower-precision representations of the value).
The step size between each successive bracket is called the
precisionStep
, measured in bits. Smaller
precisionStep
values result in larger number
of brackets, which consumes more disk space in the index
but may result in faster range search performance. The
default value, 4, was selected for a reasonable tradeoff
of disk space consumption versus performance. You can
create a custom FieldType and invoke the
NumericPrecisionStep setter if you'd
like to change the value. Note that you must also
specify a congruent value when creating
NumericRangeQuery<T>
or NumericRangeFilter<T>.
For low cardinality fields larger precision steps are good.
If the cardinality is < 100, it is fair
to use
For more information on the internals of numeric trie
indexing, including the PrecisionStep precisionStep
configuration, see NumericRangeQuery<T>. The format of
indexed values is described in NumericUtils.
If you only need to sort by numeric value, and never
run range querying/filtering, you can index using a
precisionStep
of
More advanced users can instead use NumericTokenStream directly, when indexing numbers. This class is a wrapper around this token stream type for easier, more intuitive usage.
NOTE: This was FloatField in Lucene
@since 2.9Inherited Members
Assembly: DistributedLucene.Net.dll
Syntax
public sealed class SingleField : Field, IIndexableField
Constructors
Name | Description |
---|---|
SingleField(String, Single, Field.Store) | Creates a stored or un-stored SingleField with the provided value
and default |
SingleField(String, Single, FieldType) | Expert: allows you to customize the FieldType. |
Fields
Name | Description |
---|---|
TYPE_NOT_STORED | Type for a SingleField that is not stored: normalization factors, frequencies, and positions are omitted. |
TYPE_STORED | Type for a stored SingleField: normalization factors, frequencies, and positions are omitted. |