org.hibernate.search.cfg.Environment Maven / Gradle / Ivy
Show all versions of hibernate-search-engine Show documentation
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.search.cfg;
import java.util.Map;
import org.hibernate.search.analyzer.definition.LuceneAnalysisDefinitionProvider;
import org.hibernate.search.cfg.spi.IndexManagerFactory;
import org.hibernate.search.engine.impl.DefaultIndexManagerFactory;
import org.hibernate.search.engine.service.named.impl.NoopNamedResolver;
import org.hibernate.search.engine.service.named.spi.NamedResolver;
import org.hibernate.search.engine.service.spi.Service;
import org.hibernate.search.util.impl.CollectionHelper;
/**
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
public final class Environment {
/**
* Property name to set the default object lookup method during object initialization. As value lower or upper
* cased enum names are allowed.
*
* @see org.hibernate.search.query.ObjectLookupMethod
*/
public static final String OBJECT_LOOKUP_METHOD = "hibernate.search.query.object_lookup_method";
/**
* Property name to set the default database retrieval method during object initialization. As value lower or upper
* cased enum names are allowed.
*
* @see org.hibernate.search.query.DatabaseRetrievalMethod
*/
public static final String DATABASE_RETRIEVAL_METHOD = "hibernate.search.query.database_retrieval_method";
/**
* 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 event
* Other options manual
*/
public static final String INDEXING_STRATEGY = "hibernate.search.indexing_strategy";
/**
* Default Lucene analyser
*/
public static final String ANALYZER_CLASS = "hibernate.search.analyzer";
/**
* Provider of default analysis-related definitions for Lucene.
*
* The value must be the fully-qualified name of a class implementing {@link LuceneAnalysisDefinitionProvider}.
*/
public static final String ANALYSIS_DEFINITION_PROVIDER = "hibernate.search.lucene.analysis_definition_provider";
/**
* Default Lucene similarity
*/
public static final String SIMILARITY_CLASS = "hibernate.search.similarity";
public static final String WORKER_SCOPE = "hibernate.search.worker.scope";
/**
* When set to {@code true} the indexing operations will be passed to the indexing backend within
* the transaction. When {@code false} the indexing backends are invoked as a post-transaction hook.
* Setting this to {@code true} is currently only supported when you use the JMS backends exclusively.
* Defaults to {@code false}.
*/
public static final String WORKER_ENLIST_IN_TRANSACTION = "hibernate.search.worker.enlist_in_transaction";
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";
/**
* 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";
/**
* When the "async" reader strategy is enabled queries might be allowed to use a
* stale read of the index; this property controls how often the indexes are
* refreshed, in milliseconds.
* If the refresh operation takes longer than the configured period, the longer
* time will apply: this is a best-effort limit meant to maximize performance.
*/
public static final String ASYNC_READER_REFRESH_PERIOD_MS = READER_PREFIX + "." + "async_refresh_period_ms";
/**
* 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
* SearchIntegrator (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 true
.
* 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
*
* Note that we try again after 5 seconds.
*
* 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";
/**
* Option for specifying an error handler used during processing of the Lucene updates. Supported value types are:
*
* - {@code String}: the fully qualified name of an {@link org.hibernate.search.exception.ErrorHandler} implementation
* - {@code ErrorHandler}: an error handler instance
*
* 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. Highly recommended since Lucene 3.
*/
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";
/**
* When enabled re-indexing 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";
/**
* The lucene backend can operate in async mode, and can apply changes to the index at
* regular intervals, effectively collapsing incoming changesets in order to reduce the
* amount of commits. This property specifies the interval in ms that commits will be done.
* This property will be ignored unless aync indexing is enabled.
*/
public static final String INDEX_FLUSH_INTERVAL = "index_flush_interval";
/**
* 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.
*/
public static final org.apache.lucene.util.Version DEFAULT_LUCENE_MATCH_VERSION = org.apache.lucene.util.Version.LATEST;
/**
* 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:
*
* - hibernate.search.default.indexmanager
* - hibernate.search.Books.indexmanager
*
*/
public static final String INDEX_MANAGER_IMPL_NAME = "indexmanager";
/**
* Name of the JMS message property containing the index name to which to apply remote work. JMSXGroupID is
* actually a standard JMS header field which is used for message grouping. See HSEARCH-1922.
*/
public static final String INDEX_NAME_JMS_PROPERTY = "JMSXGroupID";
/**
* Option for setting the locking strategy to be used for locking Lucene directories. Supported values are:
*
* simple
* native
* single
* none
* - The fully-qualified name of a custom {@link org.hibernate.search.store.LockFactoryProvider} implementation.
*
* Can be given globally or for specific indexes:
*
* hibernate.search.default.locking_strategy=simple
* hibernate.search.Books.locking_strategy=org.custom.components.MyLockingFactory
*
*/
public static final String LOCKING_STRATEGY = "locking_strategy";
/**
* Option for setting the base directory for storing Lucene indexes when working with file-system based directories.
* To be given globally:
*
* hibernate.search.default.indexBase=/var/lucene/indexes
*/
public static final String INDEX_BASE_PROP_NAME = "indexBase";
/**
* Option for specifying an index name for specific entities. To be given per entity:
*
* hibernate.search.com.example.Furniture.indexName=FurnitureIndex
*/
public static final String INDEX_NAME_PROP_NAME = "indexName";
/**
* Option for allowing or disallowing index uninverting when sorting on fields not covered by doc value fields. If
* disallowed and and uncovered sort is detected, an exception will be raised, otherwise only a warning will be
* logged.
*
* Allowed values are "true" and "false". Defaults to "false".
*
* @see org.hibernate.search.annotations.SortableField
*/
public static final String INDEX_UNINVERTING_ALLOWED = "hibernate.search.index_uninverting_allowed";
public static final Map, String> DEFAULT_SERVICES_MAP;
// TODO for now we hard code the default services. This could/should be made configurable (HF)
static {
DEFAULT_SERVICES_MAP = CollectionHelper.newHashMap( 2 );
DEFAULT_SERVICES_MAP.put( IndexManagerFactory.class, DefaultIndexManagerFactory.class.getName() );
DEFAULT_SERVICES_MAP.put( NamedResolver.class, NoopNamedResolver.class.getName() );
}
private Environment() {
}
}