Lucene90NormsFormat (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.codecs.lucene90, class: Lucene90NormsFormat

Package org.apache.lucene.codecs.lucene90

# Class Lucene90NormsFormat

java.lang.Object
org.apache.lucene.codecs.NormsFormat
org.apache.lucene.codecs.lucene90.Lucene90NormsFormat

public class Lucene90NormsFormat extends NormsFormat
Lucene 9.0 Score normalization format.

Encodes normalization values by encoding each value with the minimum number of bytes needed to represent the range (which can be zero).

Files:

1. `.nvd`: Norms data
2. `.nvm`: Norms metadata

1. The Norms metadata or .nvm file.

   For each norms field, this stores metadata, such as the offset into the Norms data (.nvd)

   Norms metadata (.dvm) --> Header,<Entry>NumFields,Footer

   - Header --> `IndexHeader`
   - Entry --> FieldNumber, DocsWithFieldAddress, DocsWithFieldLength, NumDocsWithField, BytesPerNorm, NormsAddress
   - FieldNumber --> `Int32`
   - DocsWithFieldAddress --> `Int64`
   - DocsWithFieldLength --> `Int64`
   - NumDocsWithField --> `Int32`
   - BytesPerNorm --> `byte`
   - NormsAddress --> `Int64`
   - Footer --> `CodecFooter`

   FieldNumber of -1 indicates the end of metadata.

   NormsAddress is the pointer to the start of the data in the norms data (.nvd), or the singleton value when BytesPerValue = 0. If BytesPerValue is different from 0 then there are NumDocsWithField values to read at that offset.

   DocsWithFieldAddress is the pointer to the start of the bit set containing documents that have a norm in the norms data (.nvd), or -2 if no documents have a norm value, or -1 if all documents have a norm value.

   DocsWithFieldLength is the number of bytes used to encode the set of documents that have a norm.

2. The Norms data or .nvd file.

   For each Norms field, this stores the actual per-document data (the heavy-lifting)

   Norms data (.nvd) --> Header,< Data >NumFields,Footer

   - Header --> `IndexHeader`
   - DocsWithFieldData --> `Bit set of MaxDoc bits`
   - NormsData --> `byte`NumDocsWithField * BytesPerValue
   - Footer --> `CodecFooter`

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Lucene90NormsFormat()`
  Sole Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `NormsConsumer`
  `normsConsumer(SegmentWriteState state)`
  Returns a `NormsConsumer` to write norms to the index.
  `NormsProducer`
  `normsProducer(SegmentReadState state)`
  Returns a `NormsProducer` to read norms from the index.

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

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

- ## Constructor Details

  - ### Lucene90NormsFormat

    public Lucene90NormsFormat()
    Sole Constructor

- ## Method Details

  - ### normsConsumer

    public NormsConsumer normsConsumer(SegmentWriteState state) throws IOException
    Description copied from class: `NormsFormat`
    Returns a `NormsConsumer` to write norms to the index.
    Specified by:
      `normsConsumer` in class `NormsFormat`
    Throws:
      `IOException`

  - ### normsProducer

    public NormsProducer normsProducer(SegmentReadState state) throws IOException
    Description copied from class: `NormsFormat`
    Returns a `NormsProducer` to read norms from the index.

    NOTE: by the time this call returns, it must hold open any files it will need to use; else, those files may be deleted. Additionally, required files may be deleted during the execution of this call before there is a chance to open them. Under these circumstances an IOException should be thrown by the implementation. IOExceptions are expected and will automatically cause a retry of the segment opening logic with the newly revised segments.

    Specified by:
      `normsProducer` in class `NormsFormat`
    Throws:
      `IOException`