blob: 449ec74bfbac7dead14ad1669e8362ee5e78ef57 [file] [log] [blame]
package org.apache.lucene.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.
*/
import org.apache.lucene.analysis.Analyzer; // javadocs
import org.apache.lucene.index.FieldInfo.DocValuesType;
import org.apache.lucene.index.FieldInfo.IndexOptions;
/**
* Describes the properties of a field.
* @lucene.experimental
*/
public interface IndexableFieldType {
/** True if the field's value should be stored */
public boolean stored();
/**
* True if this field's value should be analyzed by the
* {@link Analyzer}.
* <p>
* This has no effect if {@link #indexOptions()} returns null.
*/
// TODO: shouldn't we remove this? Whether/how a field is
// tokenized is an impl detail under Field?
public boolean tokenized();
/**
* True if this field's indexed form should be also stored
* into term vectors.
* <p>
* This builds a miniature inverted-index for this field which
* can be accessed in a document-oriented way from
* {@link IndexReader#getTermVector(int,String)}.
* <p>
* This option is illegal if {@link #indexOptions()} returns null.
*/
public boolean storeTermVectors();
/**
* True if this field's token character offsets should also
* be stored into term vectors.
* <p>
* This option is illegal if term vectors are not enabled for the field
* ({@link #storeTermVectors()} is false)
*/
public boolean storeTermVectorOffsets();
/**
* True if this field's token positions should also be stored
* into the term vectors.
* <p>
* This option is illegal if term vectors are not enabled for the field
* ({@link #storeTermVectors()} is false).
*/
public boolean storeTermVectorPositions();
/**
* True if this field's token payloads should also be stored
* into the term vectors.
* <p>
* This option is illegal if term vector positions are not enabled
* for the field ({@link #storeTermVectors()} is false).
*/
public boolean storeTermVectorPayloads();
/**
* True if normalization values should be omitted for the field.
* <p>
* This saves memory, but at the expense of scoring quality (length normalization
* will be disabled), and if you omit norms, you cannot use index-time boosts.
*/
public boolean omitNorms();
/** {@link IndexOptions}, describing what should be
* recorded into the inverted index, or null if this field
* is not indexed */
public IndexOptions indexOptions();
/**
* DocValues {@link DocValuesType}: if non-null then the field's value
* will be indexed into docValues.
*/
public DocValuesType docValueType();
}