blob: fec83ed676065b382a16135f4aa199cd82517f20 [file] [log] [blame]
namespace Lucene.Net.Codecs.Memory
{
/*
* 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.
*/
using SegmentReadState = Index.SegmentReadState;
using SegmentWriteState = Index.SegmentWriteState;
using ArrayUtil = Util.ArrayUtil;
/// <summary>
/// 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 <see cref="int"/>
/// (4 bytes) overhead per value.
///
/// <para>Limitations:
/// <list type="bullet">
/// <item><description>For binary and sorted fields the total space
/// required for all binary values cannot exceed about
/// 2.1 GB (see <see cref="MAX_TOTAL_BYTES_LENGTH"/>).</description></item>
///
/// <item><description>For sorted set fields, the sum of the size of each
/// document's set of values cannot exceed about 2.1 B
/// values (see <see cref="MAX_SORTED_SET_ORDS"/>). For example,
/// if every document has 10 values (10 instances of
/// <see cref="Documents.SortedSetDocValuesField"/>) added, then no
/// more than ~210 M documents can be added to one
/// segment. </description></item>
/// </list>
/// </para>
/// </summary>
[DocValuesFormatName("Direct")] // LUCENENET specific - using DocValuesFormatName attribute to ensure the default name passed from subclasses is the same as this class name
public class DirectDocValuesFormat : DocValuesFormat
{
/// <summary>
/// The sum of all byte lengths for binary field, or for
/// the unique values in sorted or sorted set fields, cannot
/// exceed this.
/// </summary>
public static readonly int MAX_TOTAL_BYTES_LENGTH = ArrayUtil.MAX_ARRAY_LENGTH;
/// <summary>
/// The sum of the number of values across all documents
/// in a sorted set field cannot exceed this.
/// </summary>
public static readonly int MAX_SORTED_SET_ORDS = ArrayUtil.MAX_ARRAY_LENGTH;
/// <summary>
/// Sole constructor. </summary>
public DirectDocValuesFormat()
: base()
{
}
public override DocValuesConsumer FieldsConsumer(SegmentWriteState state)
{
return new DirectDocValuesConsumer(state, DATA_CODEC, DATA_EXTENSION, METADATA_CODEC, METADATA_EXTENSION);
}
public override DocValuesProducer FieldsProducer(SegmentReadState state)
{
return new DirectDocValuesProducer(state, DATA_CODEC, DATA_EXTENSION, METADATA_CODEC, METADATA_EXTENSION);
}
internal static readonly string DATA_CODEC = "DirectDocValuesData";
internal static readonly string DATA_EXTENSION = "dvdd";
internal static readonly string METADATA_CODEC = "DirectDocValuesMetadata";
internal static readonly string METADATA_EXTENSION = "dvdm";
}
}