Package org.apache.lucene.backward_codecs.lucene60

# Class Lucene60FieldInfosFormat

java.lang.Object
org.apache.lucene.codecs.FieldInfosFormat
org.apache.lucene.backward_codecs.lucene60.Lucene60FieldInfosFormat

public final class Lucene60FieldInfosFormat extends FieldInfosFormat
Lucene 6.0 Field Infos format.

Field names are stored in the field info file, with suffix `.fnm`.

FieldInfos (.fnm) --> Header,FieldsCount, <FieldName,FieldNumber, FieldBits,DocValuesBits,DocValuesGen,Attributes,DimensionCount,DimensionNumBytes> FieldsCount,Footer

Data types:

- Header --> `IndexHeader`
- FieldsCount --> `VInt`
- FieldName --> `String`
- FieldBits, IndexOptions, DocValuesBits --> `Byte`
- FieldNumber, DimensionCount, DimensionNumBytes --> `VInt`
- Attributes --> `Map<String,String>`
- DocValuesGen --> `Int64`
- Footer --> `CodecFooter`

Field Descriptions:

- FieldsCount: the number of fields in this file.
- FieldName: name of the field as a UTF-8 String.
- FieldNumber: the field's number. Note that unlike previous versions of Lucene, the fields are not numbered implicitly by their order in the file, instead explicitly.
- FieldBits: a byte containing field options.
  - The low order bit (0x1) is one for fields that have term vectors stored, and zero for fields without term vectors.
  - If the second lowest order-bit is set (0x2), norms are omitted for the indexed field.
  - If the third lowest-order bit is set (0x4), payloads are stored for the indexed field.
- IndexOptions: a byte containing index options.
  - 0: not indexed
  - 1: indexed as DOCS_ONLY
  - 2: indexed as DOCS_AND_FREQS
  - 3: indexed as DOCS_AND_FREQS_AND_POSITIONS
  - 4: indexed as DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS
- DocValuesBits: a byte containing per-document value types. The type recorded as two four-bit integers, with the high-order bits representing `norms` options, and the low-order bits representing `DocValues` options. Each four-bit integer can be decoded as such:
  - 0: no DocValues for this field.
  - 1: NumericDocValues. (`DocValuesType.NUMERIC`)
  - 2: BinaryDocValues. (`DocValuesType#BINARY`)
  - 3: SortedDocValues. (`DocValuesType#SORTED`)
- DocValuesGen is the generation count of the field's DocValues. If this is -1, there are no DocValues updates to that field. Anything above zero means there are updates stored by `DocValuesFormat`.
- Attributes: a key-value map of codec-private attributes.
- PointDimensionCount, PointNumBytes: these are non-zero only if the field is indexed as points, e.g. using `LongPoint`

WARNING: This API is experimental and might change in incompatible ways in the next release.

## Constructor Summary

Constructors
Constructor
Description
`Lucene60FieldInfosFormat()`
Sole constructor.

## Method Summary

Modifier and Type
Method
Description
`FieldInfos`
`read(Directory directory, SegmentInfo segmentInfo, String segmentSuffix, IOContext context)`
`void`
`write(Directory directory, SegmentInfo segmentInfo, String segmentSuffix, FieldInfos infos, IOContext context)`
Note: although this format is only used on older versions, we need to keep the write logic in addition to the read logic.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Lucene60FieldInfosFormat

public Lucene60FieldInfosFormat()
Sole constructor.

## Method Details

### read

public FieldInfos read(Directory directory, SegmentInfo segmentInfo, String segmentSuffix, IOContext context) throws IOException

Specified by:
  `read` in class `FieldInfosFormat`
Throws:
  `IOException`

### write

public void write(Directory directory, SegmentInfo segmentInfo, String segmentSuffix, FieldInfos infos, IOContext context) throws IOException
Note: although this format is only used on older versions, we need to keep the write logic in addition to the read logic. It's possible for field infos on older segments to be written to, for example as part of doc values updates.

Specified by:
  `write` in class `FieldInfosFormat`
Throws:
  `IOException`