/* * 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 <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.indexes.spi; import org.hibernate.search.analyzer.spi.AnalyzerStrategy; import org.hibernate.search.cfg.spi.SearchConfiguration; import org.hibernate.search.engine.nulls.impl.MissingValueStrategy; import org.hibernate.search.engine.service.spi.ServiceManager; /** * Since Hibernate Search supports different types of indexing and query technologies, * such as embedding Apache Lucene or remote via Elasticsearch, the type of * such storage is represented by an instance implementing this interface. * <p> * Instances of implementations of this interface could be used as keys in a Map, * so make sure to implement appropriate equals and hashCode functions. * <p> * The purpose is that some components will have to adapt their output depending * on the target technology being used, so they might need to know the type. * We refrain from using Enums as that would not be extensible, and avoid using * the class type of an IndexManager to allow creating multiple custom * implementations for the same type of technology. * * @author Sanne Grinovero * @author Gunnar Morling * @hsearch.experimental This type is under active development as part of the Elasticsearch integration. * You should be prepared for incompatible changes in future releases. * @since 5.6 */ public interface IndexManagerType { /** * @param serviceManager the service manager * @param cfg the Hibernate Search configuration, providing in particular access to configuration properties. * @return a newly created strategy of analyzer execution employed by index managers of this family. */ AnalyzerStrategy createAnalyzerStrategy(ServiceManager serviceManager, SearchConfiguration cfg); /** * @param serviceManager the service manager * @param cfg the Hibernate Search configuration, providing in particular access to configuration properties. * @return a newly created strategy for missing values employed by index managers of this family. */ MissingValueStrategy createMissingValueStrategy(ServiceManager serviceManager, SearchConfiguration cfg); }