blob: fcc81440410a41b83e273444651a6362a3466c6b [file] [log] [blame]
/*
* 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.
*/
package org.apache.jackrabbit.oak.plugins.index.lucene;
import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.util.AbstractAnalysisFactory;
import org.apache.lucene.util.Version;
/**
* Constants used internally in Lucene indexes.
*/
public interface LuceneIndexConstants extends FulltextIndexConstants {
String TYPE_LUCENE = "lucene";
String SUGGEST_DATA_CHILD_NAME = ":suggest-data";
String TRASH_CHILD_NAME = ":trash";
Version VERSION = Version.LUCENE_47;
Analyzer ANALYZER = new OakAnalyzer(VERSION);
/**
* Name of the codec to be used for indexing
*/
String CODEC_NAME = "codec";
/**
* Name of the merge policy to be used while indexing
*/
String MERGE_POLICY_NAME = "mergePolicy";
/**
* Boolean property to indicate that LuceneIndex is being used in testMode
* and it should participate in every test
*/
String TEST_MODE = "testMode";
/**
* Boolean property indicating if in-built analyzer should preserve original term
* (i.e. use
* {@link org.apache.lucene.analysis.miscellaneous.WordDelimiterFilter#PRESERVE_ORIGINAL}
* flag)
*/
String INDEX_ORIGINAL_TERM = "indexOriginalTerm";
/**
* Node name under which various analyzers are configured
*/
String ANALYZERS = "analyzers";
/**
* Name of the default analyzer definition node under 'analyzers' node
*/
String ANL_DEFAULT = "default";
String ANL_FILTERS = "filters";
String ANL_STOPWORDS = "stopwords";
String ANL_TOKENIZER = "tokenizer";
String ANL_CHAR_FILTERS = "charFilters";
String ANL_CLASS = "class";
String ANL_NAME = "name";
String ANL_LUCENE_MATCH_VERSION = AbstractAnalysisFactory.LUCENE_MATCH_VERSION_PARAM;
/**
* Config node which include Tika related configuration
*/
String TIKA = "tika";
/**
* nt:file node under 'tika' node which refers to the config xml file
*/
String TIKA_CONFIG = "config.xml";
String TIKA_MAX_EXTRACT_LENGTH = "maxExtractLength";
/**
* Config node under tika which defines mime type mappings
*/
String TIKA_MIME_TYPES = "mimeTypes";
/**
* Property name within the mime type structure which defines a mime type mapping
*/
String TIKA_MAPPED_TYPE = "mappedType";
/**
* The maximum number of terms that will be indexed for a single field in a
* document. This limits the amount of memory required for indexing, so that
* collections with very large files will not crash the indexing process by
* running out of memory.
* <p>
* Note that this effectively truncates large documents, excluding from the
* index terms that occur further in the document. If you know your source
* documents are large, be sure to set this value high enough to accommodate
* the expected size. If you set it to Integer.MAX_VALUE, then the only limit
* is your memory, but you should anticipate an OutOfMemoryError.
* <p>
* By default, no more than 10,000 terms will be indexed for a field.
*/
String MAX_FIELD_LENGTH = "maxFieldLength";
/**
* whether use this property values for suggestions
*/
String PROP_USE_IN_SUGGEST = "useInSuggest";
/**
* subnode holding configuration for suggestions
*/
String SUGGESTION_CONFIG = "suggestion";
/**
* update frequency of the suggester in minutes
*/
String SUGGEST_UPDATE_FREQUENCY_MINUTES = "suggestUpdateFrequencyMinutes";
/**
* whether use this property values for spellchecking
*/
String PROP_USE_IN_SPELLCHECK = "useInSpellcheck";
/**
* whether use this property values for similarity
*/
String PROP_USE_IN_SIMILARITY = "useInSimilarity";
/**
* Property definition config indicating that null check support should be
* enabled for this property
*/
String PROP_NULL_CHECK_ENABLED = "nullCheckEnabled";
/**
* Property definition config indicating that this property would be used with
* 'IS NOT NULL' constraint
*/
String PROP_NOT_NULL_CHECK_ENABLED = "notNullCheckEnabled";
/**
* IndexRule level config to indicate that Node name should also be index
* to support fn:name() queries
*/
String INDEX_NODE_NAME = "indexNodeName";
/**
* Property definition name to indicate indexing node name
* Its value should match {@link FieldNames#NODE_NAME}
*/
String PROPDEF_PROP_NODE_NAME = ":nodeName";
/**
* Boolean property indicating that Lucene directory content
* should be saved as part of NodeState itself as a multi value property
* to allow faster reads (OAK-2809)
*/
String SAVE_DIR_LISTING = "saveDirectoryListing";
/**
* Optional Property to store the path of index in the repository. Path at which index
* definition is defined is not known to IndexEditor. To make use of CopyOnWrite
* feature its required to know the indexPath to optimize the lookup and read of
* existing index files
*
* @deprecated With OAK-4152 no need to explicitly define indexPath property
*/
@Deprecated
String INDEX_PATH = "indexPath";
}