package org.compass.core.engine;
import org.compass.core.ResourceFactory;
import org.compass.core.config.RuntimeCompassSettings;
import org.compass.core.engine.naming.PropertyNamingStrategy;
import org.compass.core.engine.spellcheck.SearchEngineSpellCheckManager;
import org.compass.core.mapping.CompassMapping;
import at.molindo.elastic.compass.CompassAdapted;
@CompassAdapted
public interface SearchEngineFactory {
CompassMapping getMapping();
SearchEngineIndexManager getIndexManager();
void start();
void stop();
void close();
ResourceFactory getResourceFactory();
SearchEngine openSearchEngine(RuntimeCompassSettings runtimeSettings);
/**
* Returns the name of the alias property.
*
* @return The name of the alias property.
*/
String getAliasProperty();
/**
* Returns the name of the extending alias property name.
*/
String getExtendedAliasProperty();
SearchEngineQueryBuilder queryBuilder() throws SearchEngineException;
SearchEngineQueryFilterBuilder queryFilterBuilder() throws SearchEngineException;
PropertyNamingStrategy getPropertyNamingStrategy();
SearchEngineSpellCheckManager getSpellCheckManager();
}