/*
* 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.elasticsearch.analyzer.impl;
import org.hibernate.search.elasticsearch.settings.impl.model.AnalyzerDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.CharFilterDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.TokenFilterDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.TokenizerDefinition;
import org.hibernate.search.exception.SearchException;
/**
* A registry of analysis-related definitions for Elasticsearch.
*
* @author Yoann Rodiere
*/
public interface ElasticsearchAnalysisDefinitionRegistry {
/**
* Register an analyzer definition.
* @param name The name of the definition to be registered.
* @param definition The definition to be registered.
* @throws SearchException if the name is already associated with a different definition.
*/
void register(String name, AnalyzerDefinition definition);
/**
* Register a tokenizer definition.
* @param name The name of the definition to be registered.
* @param definition The definition to be registered.
* @throws SearchException if the name is already associated with a different definition.
*/
void register(String name, TokenizerDefinition definition);
/**
* Register a token filter definition.
* @param name The name of the definition to be registered.
* @param definition The definition to be registered.
* @throws SearchException if the name is already associated with a different definition.
*/
void register(String name, TokenFilterDefinition definition);
/**
* Register a char filter definition.
* @param name The name of the definition to be registered.
* @param definition The definition to be registered.
* @throws SearchException if the name is already associated with a different definition.
*/
void register(String name, CharFilterDefinition definition);
/**
* @param name An analyzer name
* @return The analyzer definition associated with the given name,
* or {@code null} if there isn't any.
*/
AnalyzerDefinition getAnalyzerDefinition(String name);
/**
* @param name A tokenizer name
* @return The tokenizer definition associated with the given name,
* or {@code null} if there isn't any.
*/
TokenizerDefinition getTokenizerDefinition(String name);
/**
* @param name A token filter name
* @return The token filter definition associated with the given name,
* or {@code null} if there isn't any.
*/
TokenFilterDefinition getTokenFilterDefinition(String name);
/**
* @param name A char filter name
* @return The char filter definition associated with the given name,
* or {@code null} if there isn't any.
*/
CharFilterDefinition getCharFilterDefinition(String name);
}