## org.apache.lucene.document
Class FloatField

    java.lang.Object
      org.apache.lucene.document.Field
          org.apache.lucene.document.FloatField

All Implemented Interfaces:
  IndexableField

    public final class FloatField

extends Field

Field that indexes `float` values for efficient range filtering and sorting. Here's an example usage:

     document.add(new FloatField(name, 6.0F, Field.Store.NO));

For optimal performance, re-use the `FloatField` and `Document` instance for more than one document:

      FloatField field = new FloatField(name, 0.0F, Field.Store.NO);
      Document document = new Document();
      document.add(field);

      for(all documents) {
        ...
        field.setFloatValue(value)
        writer.addDocument(document);
        ...
      }

See also `IntField`, `LongField`, `DoubleField`.

To perform range querying or filtering against a `FloatField`, use `NumericRangeQuery` or `NumericRangeFilter`. To sort according to a `FloatField`, use the normal numeric sort types, eg `SortField.Type.FLOAT`. `FloatField` values can also be loaded directly from `FieldCache`.

You may add the same field name as an `FloatField` 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 `FloatField`.

A `FloatField` 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 `FieldType.setNumericPrecisionStep(int)` method if you'd like to change the value. Note that you must also specify a congruent value when creating `NumericRangeQuery` or `NumericRangeFilter`. For low cardinality fields larger precision steps are good. If the cardinality is < 100, it is fair to use `Integer.MAX_VALUE`, which produces one term per value.

For more information on the internals of numeric trie indexing, including the `precisionStep` configuration, see `NumericRangeQuery`. 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 `Integer.MAX_VALUE`. This will minimize disk space consumed.

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.

Since:
  2.9

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.lucene.document.Field
`Field.Index, Field.Store, Field.TermVector`

Field Summary
`static FieldType` `TYPE_NOT_STORED` Type for a FloatField that is not stored: normalization factors, frequencies, and positions are omitted.
`static FieldType` `TYPE_STORED` Type for a stored FloatField: normalization factors, frequencies, and positions are omitted.

Fields inherited from class org.apache.lucene.document.Field
`boost, fieldsData, name, tokenStream, type`

Constructor Summary
`FloatField(String name, float value, Field.Store stored)` Creates a stored or un-stored FloatField with the provided value and default `precisionStep` `NumericUtils.PRECISION_STEP_DEFAULT` (4).
`FloatField(String name, float value, FieldType type)` Expert: allows you to customize the `FieldType`.

Method Summary

Methods inherited from class org.apache.lucene.document.Field
`binaryValue, boost, fieldType, name, numericValue, readerValue, setBoost, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, stringValue, tokenStream, tokenStreamValue, toString, translateFieldType`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### TYPE_NOT_STORED

    public static final FieldType TYPE_NOT_STORED

  Type for a FloatField that is not stored: normalization factors, frequencies, and positions are omitted.

### TYPE_STORED

    public static final FieldType TYPE_STORED

  Type for a stored FloatField: normalization factors, frequencies, and positions are omitted.

Constructor Detail

### FloatField

    public FloatField(String name,
                      float value,
                      Field.Store stored)

  Creates a stored or un-stored FloatField with the provided value and default `precisionStep` `NumericUtils.PRECISION_STEP_DEFAULT` (4).

  Parameters:
    `name` - field name
    `value` - 32-bit double value
    `stored` - Store.YES if the content should also be stored
  Throws:
    `IllegalArgumentException` - if the field name is null.

### FloatField

    public FloatField(String name,
                      float value,
                      FieldType type)

  Expert: allows you to customize the `FieldType`.

  Parameters:
    `name` - field name
    `value` - 32-bit float value
    `type` - customized field type: must have `FieldType.numericType()` of `FieldType.NumericType.FLOAT`.
  Throws:
    `IllegalArgumentException` - if the field name or type is null, or if the field type does not have a FLOAT numericType()

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.