/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Red Hat, Inc. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.hibernate.search; /** * @author Emmanuel Bernard * @author Hardy Ferentschik */ public final class Environment { private Environment() { } /** * Enable listeners auto registration in Hibernate Annotations and EntityManager. Default to true. */ public static final String AUTOREGISTER_LISTENERS = "hibernate.search.autoregister_listeners"; /** * Defines the indexing strategy, default <code>event</code> * Other options <code>manual</code> */ public static final String INDEXING_STRATEGY = "hibernate.search.indexing_strategy"; /** * Default Lucene analyser */ public static final String ANALYZER_CLASS = "hibernate.search.analyzer"; /** * Default Lucene similarity */ public static final String SIMILARITY_CLASS = "hibernate.search.similarity"; public static final String WORKER_SCOPE = "hibernate.search.worker.scope"; public static final String WORKER_PREFIX = "worker."; public static final String WORKER_BACKEND = WORKER_PREFIX + "backend"; public static final String WORKER_EXECUTION = WORKER_PREFIX + "execution"; /** * Defines the maximum number of indexing operation batched per transaction */ public static final String QUEUEINGPROCESSOR_BATCHSIZE = "hibernate.search.batch_size"; /** * Thread pool size * default 1 */ public static final String WORKER_THREADPOOL_SIZE = Environment.WORKER_PREFIX + "thread_pool.size"; /** * Size of the buffer queue (besides the thread pool size) * <ul> * <li>only used then execution is async</li> * <li>default infinite</li> * </ul> */ public static final String WORKER_WORKQUEUE_SIZE = Environment.WORKER_PREFIX + "buffer_queue.max"; /** * define the reader prefix */ public static final String READER_PREFIX = "reader"; /** * define the reader strategy used */ public static final String READER_STRATEGY = READER_PREFIX + "." + "strategy"; /** * filter caching strategy class (must have a no-arg constructor and implement FilterCachingStrategy) */ public static final String FILTER_CACHING_STRATEGY = "hibernate.search.filter.cache_strategy"; /** * number of docidresults cached in hard reference. */ public static final String CACHE_DOCIDRESULTS_SIZE = "hibernate.search.filter.cache_docidresults.size"; /** * When set to true a lock on the index will not be released until the * SearchFactory (or SessionFactory) is closed. * This improves performance in applying changes to the index, but no other application * can access the index in write mode while Hibernate Search is running. * This is an index-scoped property and defaults to false. */ public static final String EXCLUSIVE_INDEX_USE = "exclusive_index_use"; /** * Boolean setting, defaults to <code>true</code>. * Unless it's disabled Hibernate Search will assume it knows all entities mapped * to this index and will enable all optimizations which are considered safe * in the known schema. * For example it will delete indexed entities from the index using only the * identifier if there is only one type in the index; when multiple types share * the same index or this option is disabled it will need to delete entities * using both the id and the classname. */ public static final String INDEX_METADATA_COMPLETE = "index_metadata_complete"; /** * Number of times we retry the logic looking for marker files in master's directory before * giving up and raising an exception. * This setting is the suffix of an index using FSSlaveDirectoryProvider * <p/> * Note that we try again after 5 seconds. * <p/> * Default to 0 (ie no retry). */ public static final String RETRY_MARKER_LOOKUP = "retry_marker_lookup"; /** * Define the similarity class name for a given index */ public static final String SIMILARITY_CLASS_PER_INDEX = "similarity"; /** * Provide a programmatic mapping model to Hibernate Search configuration * Accepts a fully populated SearchMapping object or a fully qualified * class name of a SearchMapping factory. Such a factory must have: * - a no-arg constructor * - a method returning SearchMapping and annotated with @Factory */ public static final String MODEL_MAPPING = "hibernate.search.model_mapping"; /** * Set to a fully qualified classname of a type implementing org.hibernate.search.exception.ErrorHandler * to override the error strategy used during processing of the Lucene updates. * Default is to log errors. */ public static final String ERROR_HANDLER = "hibernate.search.error_handler"; /** * If set to {@code true} JMX beans get enabled. For all other values the beans do not. * get enabled. */ public static final String JMX_ENABLED = "hibernate.search.jmx_enabled"; /** * If JMX bean deployment is enabled (see {@link #JMX_ENABLED}) the specified suffix will be appended to the registered * MBean names. This allows for running multiple apps on the same JVM each which JMX enabled. If not specified only the default * names are used. */ public static final String JMX_BEAN_SUFFIX = "hibernate.search.jmx_bean_suffix"; /** * If set to {@code true} the search statistic will be gathered. */ public static final String GENERATE_STATS = "hibernate.search.generate_statistics"; /** * The Lucene match version parameter. Needed since Lucene 3.x */ public static final String LUCENE_MATCH_VERSION = "hibernate.search.lucene_version"; /** * Parameter name used to configure the default null token */ public static final String DEFAULT_NULL_TOKEN = "hibernate.search.default_null_token"; /** * Tokenizer or filter parameter describing the charset used to load associated resources if needed. */ public static final String RESOURCE_CHARSET = "resource_charset"; /** * When enabled reindexing of an entity is skipped if the updates affect only non-indexed fields. * Enabled by default as it should be safe and should improve performance, disable it to force updates * skipping value checks. * Affect semantics of entity updates only. */ public static final String ENABLE_DIRTY_CHECK = "hibernate.search.enable_dirty_check"; /** * The lucene backend has a separate writing thread for each index, the work pushed to each thread * is put in a queue which grows up to a maximum number of elements, which is configured by this * setting and defaults to 1000. * When the limit is reached work producers are blocked until some work has been processed. */ public static final String MAX_QUEUE_LENGTH = "max_queue_length"; /** * If nothing else is specified we use {@code Version.LUCENE_CURRENT} as the default Lucene version. This version * parameter was introduced by Lucene to attempt providing backwards compatibility when upgrading Lucene versions * and not wanting to rebuild the index from scratch. It's highly recommended to specify a version, so that you * can upgrade Hibernate Search and control when to eventually upgrade the Lucene format. */ @SuppressWarnings("deprecation")//We know it's discouraged public static final org.apache.lucene.util.Version DEFAULT_LUCENE_MATCH_VERSION = org.apache.lucene.util.Version.LUCENE_CURRENT; /** * Used to specify an alternative IndexManager implementation for a specific index. * This is an index scoped property, so it needs to be prefixed by default or the index name, for example: * <ul> * <li>hibernate.search.default.indexmanager</li> * <li>hibernate.search.Books.indexmanager</li> * </ul> */ public static final String INDEX_MANAGER_IMPL_NAME = "indexmanager"; }