﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Namespace Lucene.Net.Codecs.Memory
   | Apache Lucene.NET 4.8.0-beta00013 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Lucene.Net.Codecs.Memory
   | Apache Lucene.NET 4.8.0-beta00013 Documentation ">
    <meta name="generator" content="docfx 2.56.2.0">
    
    <link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
    <meta property="docfx:navrel" content="toc.html">
    <meta property="docfx:tocrel" content="codecs/toc.html">
    
    <meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="/">
                <img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search">
            <ul class="level0 breadcrumb">
                <li>
                    <a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
                     <span id="breadcrumb">
                        <ul class="breadcrumb">
                          <li></li>
                        </ul>
                    </span>   
                </li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items">
            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
          </div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Lucene.Net.Codecs.Memory">
  
  <h1 id="Lucene_Net_Codecs_Memory" data-uid="Lucene.Net.Codecs.Memory" class="text-break">Namespace Lucene.Net.Codecs.Memory
  </h1>
  <div class="markdown level0 summary"><!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<p>Term dictionary, DocValues or Postings formats that are read entirely into memory.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="markdown level0 remarks"></div>
    <h3 id="classes">Classes
  </h3>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.DirectDocValuesFormat.html">DirectDocValuesFormat</a></h4>
      <section><p>In-memory docvalues format that does no (or very little)
compression.  Indexed values are stored on disk, but
then at search time all values are loaded into memory as
simple .NET arrays.  For numeric values, it uses
byte[], short[], int[], long[] as necessary to fit the
range of the values.  For binary values, there is an <span class="xref">System.Int32</span>
(4 bytes) overhead per value.</p>
<p>Limitations:
<ul><li>For binary and sorted fields the total space
       required for all binary values cannot exceed about
       2.1 GB (see <a class="xref" href="Lucene.Net.Codecs.Memory.DirectDocValuesFormat.html#Lucene_Net_Codecs_Memory_DirectDocValuesFormat_MAX_TOTAL_BYTES_LENGTH">MAX_TOTAL_BYTES_LENGTH</a>).</li><li>For sorted set fields, the sum of the size of each
       document&apos;s set of values cannot exceed about 2.1 B
       values (see <a class="xref" href="Lucene.Net.Codecs.Memory.DirectDocValuesFormat.html#Lucene_Net_Codecs_Memory_DirectDocValuesFormat_MAX_SORTED_SET_ORDS">MAX_SORTED_SET_ORDS</a>).  For example,
       if every document has 10 values (10 instances of
<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Documents.SortedSetDocValuesField.html">SortedSetDocValuesField</a>) added, then no
more than ~210 M documents can be added to one
segment. </li></ul> 
</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.DirectPostingsFormat.html">DirectPostingsFormat</a></h4>
      <section><p>Wraps <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.Lucene41.Lucene41PostingsFormat.html">Lucene41PostingsFormat</a> format for on-disk
storage, but then at read time loads and stores all
terms &amp; postings directly in RAM as byte[], int[].</p>
<p><p><strong>WARNING</strong>: This is
exceptionally RAM intensive: it makes no effort to
compress the postings data, storing terms as separate
byte[] and postings as separate int[], but as a result it 
gives substantial increase in search performance.</p>
<p>
<p>This postings format supports <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Index.TermsEnum.html#Lucene_Net_Index_TermsEnum_Ord">Ord</a>
and <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Index.TermsEnum.html#Lucene_Net_Index_TermsEnum_SeekExact_System_Int64_">SeekExact(Int64)</a>.</p>
<p>
<p>Because this holds all term bytes as a single
byte[], you cannot have more than 2.1GB worth of term
bytes in a single segment.
</p></p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTOrdPostingsFormat.html">FSTOrdPostingsFormat</a></h4>
      <section><p>FSTOrd term dict + Lucene41PBF</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTOrdPulsing41PostingsFormat.html">FSTOrdPulsing41PostingsFormat</a></h4>
      <section><p>FSTOrd + Pulsing41
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTOrdTermsReader.html">FSTOrdTermsReader</a></h4>
      <section><p>FST-based terms dictionary reader.
<p>
The FST index maps each term and its ord, and during seek 
the ord is used fetch metadata from a single block.
The term dictionary is fully memory resident.
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTOrdTermsWriter.html">FSTOrdTermsWriter</a></h4>
      <section><p>FST-based term dict, using ord as FST output.
<p>
The FST holds the mapping between &lt;term, ord&gt;, and 
term&apos;s metadata is delta encoded into a single byte block.
<p>
Typically the byte block consists of four parts:
<ol><li>term statistics: docFreq, totalTermFreq;</li><li>monotonic long[], e.g. the pointer to the postings list for that term;</li><li>generic byte[], e.g. other information customized by postings base.</li><li>single-level skip list to speed up metadata decoding by ord.</li></ol>
<p>
<p>
Files:
<ul><li><code>.tix</code>: <a href="#Termindex">Term Index</a></li><li><code>.tbk</code>: <a href="#Termblock">Term Block</a></li></ul>
</p></p>
<p><a name="Termindex" id="Termindex"></a>
<h3>Term Index</h3>
<p>
 The .tix contains a list of FSTs, one for each field.
 The FST maps a term to its corresponding order in current field.
</p></p>
<ul><li>TermIndex(.tix) --&gt; Header, TermFST<sup>NumFields</sup>, Footer</li><li>TermFST --&gt; <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Util.Fst.FST-1.html">FST&lt;T&gt;</a></li><li>Header --&gt; CodecHeader (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.CodecUtil.html#Lucene_Net_Codecs_CodecUtil_WriteHeader_Lucene_Net_Store_DataOutput_System_String_System_Int32_">WriteHeader(DataOutput, String, Int32)</a>) </li><li>Footer --&gt; CodecFooter (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.CodecUtil.html#Lucene_Net_Codecs_CodecUtil_WriteFooter_Lucene_Net_Store_IndexOutput_">WriteFooter(IndexOutput)</a>) </li></ul>

<p>Notes:</p>
<ul><li>
 Since terms are already sorted before writing to <a href="#Termblock">Term Block</a>, 
 their ords can directly used to seek term metadata from term block.
</li></ul>

<a name="Termblock" id="Termblock"></a>
<h3>Term Block</h3>
<p>
The .tbk contains all the statistics and metadata for terms, along with field summary (e.g. 
per-field data like number of documents in current field). For each field, there are four blocks:
<ul><li>statistics bytes block: contains term statistics; </li><li>metadata longs block: delta-encodes monotonic part of metadata; </li><li>metadata bytes block: encodes other parts of metadata; </li><li>skip block: contains skip data, to speed up metadata seeking and decoding</li></ul>
</p>

<p><p>File Format:</p>
<ul><li>TermBlock(.tbk) --&gt; Header, <em>PostingsHeader</em>, FieldSummary, DirOffset</li><li>FieldSummary --&gt; NumFields, &lt;FieldNumber, NumTerms, SumTotalTermFreq?, SumDocFreq,
                                        DocCount, LongsSize, DataBlock &gt; <sup>NumFields</sup>, Footer</li><li>DataBlock --&gt; StatsBlockLength, MetaLongsBlockLength, MetaBytesBlockLength, 
                      SkipBlock, StatsBlock, MetaLongsBlock, MetaBytesBlock </li><li>SkipBlock --&gt; &lt; StatsFPDelta, MetaLongsSkipFPDelta, MetaBytesSkipFPDelta, 
                           MetaLongsSkipDelta<sup>LongsSize</sup> &gt;<sup>NumTerms</sup></li><li>StatsBlock --&gt; &lt; DocFreq[Same?], (TotalTermFreq-DocFreq) ? &gt; <sup>NumTerms</sup></li><li>MetaLongsBlock --&gt; &lt; LongDelta<sup>LongsSize</sup>, BytesSize &gt; <sup>NumTerms</sup></li><li>MetaBytesBlock --&gt; Byte <sup>MetaBytesBlockLength</sup></li><li>Header --&gt; CodecHeader (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.CodecUtil.html#Lucene_Net_Codecs_CodecUtil_WriteHeader_Lucene_Net_Store_DataOutput_System_String_System_Int32_">WriteHeader(DataOutput, String, Int32)</a>) </li><li>DirOffset --&gt; Uint64 (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteInt64_System_Int64_">WriteInt64(Int64)</a>) </li><li>NumFields, FieldNumber, DocCount, DocFreq, LongsSize, 
       FieldNumber, DocCount --&gt; VInt (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteVInt32_System_Int32_">WriteVInt32(Int32)</a>) </li><li>NumTerms, SumTotalTermFreq, SumDocFreq, StatsBlockLength, MetaLongsBlockLength, MetaBytesBlockLength,
       StatsFPDelta, MetaLongsSkipFPDelta, MetaBytesSkipFPDelta, MetaLongsSkipStart, TotalTermFreq, 
       LongDelta,--&gt; VLong (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteVInt64_System_Int64_">WriteVInt64(Int64)</a>) </li><li>Footer --&gt; CodecFooter (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.CodecUtil.html#Lucene_Net_Codecs_CodecUtil_WriteFooter_Lucene_Net_Store_IndexOutput_">WriteFooter(IndexOutput)</a>) </li></ul>
<p>Notes: </p>
<ul><li>
  The format of PostingsHeader and MetaBytes are customized by the specific postings implementation:
  they contain arbitrary per-file data (such as parameters or versioning information), and per-term data 
  (non-monotonic ones like pulsed postings data).
</li><li>
 During initialization the reader will load all the blocks into memory. SkipBlock will be decoded, so that during seek
 term dict can lookup file pointers directly. StatsFPDelta, MetaLongsSkipFPDelta, etc. are file offset
 for every SkipInterval&apos;s term. MetaLongsSkipDelta is the difference from previous one, which indicates
 the value of preceding metadata longs for every SkipInterval&apos;s term.
</li><li>
 DocFreq is the count of documents which contain the term. TotalTermFreq is the total number of occurrences of the term. 
 Usually these two values are the same for long tail terms, therefore one bit is stole from DocFreq to check this case,
 so that encoding of TotalTermFreq may be omitted.
</li></ul>
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTPostingsFormat.html">FSTPostingsFormat</a></h4>
      <section><p>FST term dict + Lucene41PBF</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTPulsing41PostingsFormat.html">FSTPulsing41PostingsFormat</a></h4>
      <section><p>FST + Pulsing41, test only, since
FST does no delta encoding here!
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTTermsReader.html">FSTTermsReader</a></h4>
      <section><p>FST-based terms dictionary reader.
<p>
The FST directly maps each term and its metadata, 
it is memory resident.
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.FSTTermsWriter.html">FSTTermsWriter</a></h4>
      <section><p>FST-based term dict, using metadata as FST output.
<p>
The FST directly holds the mapping between &lt;term, metadata&gt;.
<p>
Term metadata consists of three parts:
<ol><li>term statistics: docFreq, totalTermFreq;</li><li>monotonic long[], e.g. the pointer to the postings list for that term;</li><li>generic byte[], e.g. other information need by postings reader.</li></ol>
<p>
File:
<ul><li><code>.tst</code>: <a href="#Termdictionary">Term Dictionary</a></li></ul>
</p>
<p>
<p><a name="Termdictionary" id="Termdictionary"></a>
<h3>Term Dictionary</h3>
</p>
<p>
 The .tst contains a list of FSTs, one for each field.
 The FST maps a term to its corresponding statistics (e.g. docfreq) 
 and metadata (e.g. information for postings list reader like file pointer
 to postings list).
</p>
<p>
Typically the metadata is separated into two parts:
<ul><li>
   Monotonical long array: Some metadata will always be ascending in order
   with the corresponding term. This part is used by FST to share outputs between arcs.
</li><li>
 Generic byte array: Used to store non-monotonic metadata.
</li></ul>
</p></p>
<p>File format:
<ul><li>TermsDict(.tst) --&gt; Header, <em>PostingsHeader</em>, FieldSummary, DirOffset</li><li>FieldSummary --&gt; NumFields, &lt;FieldNumber, NumTerms, SumTotalTermFreq?, 
                                     SumDocFreq, DocCount, LongsSize, TermFST &gt;<sup>NumFields</sup></li><li>TermFST TermData</li><li>TermData --&gt; Flag, BytesSize?, LongDelta<sup>LongsSize</sup>?, Byte<sup>BytesSize</sup>?, 
                     &lt; DocFreq[Same?], (TotalTermFreq-DocFreq) &gt; ? </li><li>Header --&gt; CodecHeader (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Codecs.CodecUtil.html#Lucene_Net_Codecs_CodecUtil_WriteHeader_Lucene_Net_Store_DataOutput_System_String_System_Int32_">WriteHeader(DataOutput, String, Int32)</a>) </li><li>DirOffset --&gt; Uint64 (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteInt64_System_Int64_">WriteInt64(Int64)</a>) </li><li>DocFreq, LongsSize, BytesSize, NumFields,
       FieldNumber, DocCount --&gt; VInt (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteVInt32_System_Int32_">WriteVInt32(Int32)</a>) </li><li>TotalTermFreq, NumTerms, SumTotalTermFreq, SumDocFreq, LongDelta --&gt; 
       VLong (<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Store.DataOutput.html#Lucene_Net_Store_DataOutput_WriteVInt64_System_Int64_">WriteVInt64(Int64)</a>) </li></ul>
<p>Notes:</p>
<ul><li>
  The format of PostingsHeader and generic meta bytes are customized by the specific postings implementation:
  they contain arbitrary per-file data (such as parameters or versioning information), and per-term data
  (non-monotonic ones like pulsed postings data).
</li><li>
 The format of TermData is determined by FST, typically monotonic metadata will be dense around shallow arcs,
 while in deeper arcs only generic bytes and term statistics exist.
</li><li>
 The byte Flag is used to indicate which part of metadata exists on current arc. Specially the monotonic part
 is omitted when it is an array of 0s.
</li><li>
 Since LongsSize is per-field fixed, it is only written once in field summary.
</li></ul>
<p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.MemoryDocValuesFormat.html">MemoryDocValuesFormat</a></h4>
      <section><p>In-memory docvalues format. </p>
</section>
      <h4><a class="xref" href="Lucene.Net.Codecs.Memory.MemoryPostingsFormat.html">MemoryPostingsFormat</a></h4>
      <section><p>Stores terms &amp; postings (docs, positions, payloads) in
RAM, using an FST.</p>
<p><p>Note that this codec implements advance as a linear
scan!  This means if you store large fields in here,
queries that rely on advance will (AND BooleanQuery,
PhraseQuery) will be relatively slow!
</p></p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p>
</section>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <div class="contribution">
                <ul class="nav">
                  <li>
                    <a href="https://github.com/apache/lucenenet/blob/docs/4.8.0-beta00013/src/Lucene.Net.Codecs/Memory/package.md/#L2" class="contribution-link">Improve this Doc</a>
                  </li>
                </ul>
              </div>
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            Copyright © 2020 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
  </body>
</html>
