/*
* 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 System;
namespace Lucene.Net.Index
{
/// The TermVectorMapper can be used to map Term Vectors into your own
/// structure instead of the parallel array structure used by
/// .
///
/// It is up to the implementation to make sure it is thread-safe.
///
///
///
///
public abstract class TermVectorMapper
{
private bool ignoringPositions;
private bool ignoringOffsets;
protected internal TermVectorMapper()
{
}
///
/// true if this mapper should tell Lucene to ignore positions even if they are stored
///
/// similar to ignoringPositions
///
protected internal TermVectorMapper(bool ignoringPositions, bool ignoringOffsets)
{
this.ignoringPositions = ignoringPositions;
this.ignoringOffsets = ignoringOffsets;
}
/// Tell the mapper what to expect in regards to field, number of terms, offset and position storage.
/// This method will be called once before retrieving the vector for a field.
///
/// This method will be called before .
///
/// The field the vector is for
///
/// The number of terms that need to be mapped
///
/// true if the mapper should expect offset information
///
/// true if the mapper should expect positions info
///
public abstract void SetExpectations(System.String field, int numTerms, bool storeOffsets, bool storePositions);
/// Map the Term Vector information into your own structure
/// The term to add to the vector
///
/// The frequency of the term in the document
///
/// null if the offset is not specified, otherwise the offset into the field of the term
///
/// null if the position is not specified, otherwise the position in the field of the term
///
public abstract void Map(System.String term, int frequency, TermVectorOffsetInfo[] offsets, int[] positions);
/// Indicate to Lucene that even if there are positions stored, this mapper is not interested in them and they
/// can be skipped over. Derived classes should set this to true if they want to ignore positions. The default
/// is false, meaning positions will be loaded if they are stored.
///
/// false
public virtual bool IsIgnoringPositions
{
get { return ignoringPositions; }
}
///
/// Same principal as , but applied to offsets. false by default.
///
/// false
public virtual bool IsIgnoringOffsets
{
get { return ignoringOffsets; }
}
/// Passes down the index of the document whose term vector is currently being mapped,
/// once for each top level call to a term vector reader.
///
/// Default implementation IGNORES the document number. Override if your implementation needs the document number.
///
/// NOTE: Document numbers are internal to Lucene and subject to change depending on indexing operations.
///
///
/// index of document currently being mapped
///
public virtual void SetDocumentNumber(int documentNumber)
{
}
}
}