blob: 25e44ed427aa9fd411482a134397a4e56a120acf [file] [log] [blame]
namespace Lucene.Net.Index
{
/*
* 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.
*/
// javadocs
using AttributeSource = Lucene.Net.Util.AttributeSource;
/// <summary>
/// This class tracks the number and position / offset parameters of terms
/// being added to the index. The information collected in this class is
/// also used to calculate the normalization factor for a field.
/// <para/>
/// @lucene.experimental
/// </summary>
public sealed class FieldInvertState
{
// LUCENENET specific - made fields private and added internal setters so they can be set
private string name;
private int position;
private int length;
private int numOverlap;
private int offset;
private int maxTermFrequency;
private int uniqueTermCount;
private float boost;
private AttributeSource attributeSource;
/// <summary>
/// Creates <see cref="FieldInvertState"/> for the specified
/// field name.
/// </summary>
public FieldInvertState(string name)
{
this.name = name;
}
/// <summary>
/// Creates <see cref="FieldInvertState"/> for the specified
/// field name and values for all fields.
/// </summary>
public FieldInvertState(string name, int position, int length, int numOverlap, int offset, float boost)
{
this.name = name;
this.position = position;
this.length = length;
this.numOverlap = numOverlap;
this.offset = offset;
this.boost = boost;
}
/// <summary>
/// Re-initialize the state
/// </summary>
internal void Reset()
{
position = 0;
length = 0;
numOverlap = 0;
offset = 0;
maxTermFrequency = 0;
uniqueTermCount = 0;
boost = 1.0f;
attributeSource = null;
}
/// <summary>
/// Gets the last processed term position. </summary>
/// <returns> the position </returns>
public int Position
{
get => position;
internal set => position = value; // LUCENENET specific to protect private field
}
/// <summary>
/// Gets or Sets total number of terms in this field. </summary>
/// <returns> the length </returns>
public int Length
{
get => length;
set => this.length = value;
}
/// <summary>
/// Gets or Sets the number of terms with <c>positionIncrement == 0</c>. </summary>
/// <returns> the numOverlap </returns>
public int NumOverlap
{
get => numOverlap;
set => this.numOverlap = value;
}
/// <summary>
/// Gets end offset of the last processed term. </summary>
/// <returns> the offset </returns>
public int Offset
{
get => offset;
internal set => offset = value; // LUCENENET specific to protect private field
}
/// <summary>
/// Gets or Sets boost value. This is the cumulative product of
/// document boost and field boost for all field instances
/// sharing the same field name. </summary>
/// <returns> the boost </returns>
public float Boost
{
get => boost;
set => this.boost = value;
}
/// <summary>
/// Get the maximum term-frequency encountered for any term in the field. A
/// field containing "the quick brown fox jumps over the lazy dog" would have
/// a value of 2, because "the" appears twice.
/// </summary>
public int MaxTermFrequency
{
get => maxTermFrequency;
internal set => maxTermFrequency = value; // LUCENENET specific to protect private field
}
/// <summary>
/// Gets the number of unique terms encountered in this field.
/// </summary>
public int UniqueTermCount
{
get => uniqueTermCount;
internal set => uniqueTermCount = value; // LUCENENET specific to protect private field
}
/// <summary>
/// Gets the <see cref="Util.AttributeSource"/> from the
/// <see cref="Analysis.TokenStream"/> that provided the indexed tokens for this
/// field.
/// </summary>
public AttributeSource AttributeSource
{
get => attributeSource;
internal set => attributeSource = value; // LUCENENET specific to protect private field
}
/// <summary>
/// Gets the field's name
/// </summary>
public string Name
{
get => name;
internal set => name = value; // LUCENENET specific to protect private field
}
}
}