/* * 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) { } } }