001: /*
002: * Copyright 2004-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.compass.core.engine.spellcheck;
018:
019: import org.compass.core.CompassQuery;
020: import org.compass.core.engine.SearchEngineException;
021:
022: /**
023: * The spell check manager allows to perform spell check index level operations. It also
024: * allows to perform operations using the spell check, for example to suggest words for
025: * a given word.
026: *
027: * <p>The spell check manager can be configured using {@link org.compass.core.lucene.LuceneEnvironment.SpellCheck}
028: * settings.
029: *
030: * @author kimchy
031: */
032: public interface SearchEngineSpellCheckManager {
033:
034: /**
035: * Starts the spell check manager. Will start a scheduled task to refresh the cached
036: * searchers and readers over the spell check index. Will also schedule, if configured,
037: * a schediled rebuild of the spell check index.
038: */
039: void start();
040:
041: /**
042: * Stops any scheduled tasks started by the {@link #start()} method.
043: */
044: void stop();
045:
046: /**
047: * Returns <code>true</code> if a rebuild of the spell check index is required.
048: */
049: boolean isRebuildNeeded() throws SearchEngineException;
050:
051: /**
052: * Returns <code>true</code> if a rebuild of the spell index for the given sub
053: * index is required.
054: */
055: boolean isRebuildNeeded(String subIndex)
056: throws SearchEngineException;
057:
058: /**
059: * Same as {@link #rebuild()} but executes the rebuild of each sub index using Compass
060: * built in thread pool
061: */
062: boolean concurrentRebuild() throws SearchEngineException;
063:
064: /**
065: * Rebuilds the spell check index. Won't rebuild specific sub indexes if it is not needed.
066: */
067: boolean rebuild() throws SearchEngineException;
068:
069: /**
070: * Rebuilds the spell check index for the given sub index. Won't rebuild if it is not needed.
071: */
072: boolean rebuild(String subIndex) throws SearchEngineException;
073:
074: /**
075: * Same as {@link #refresh()} but executes the refresh of each sub index using Compass
076: * built in thread pool.
077: */
078: void concurrentRefresh() throws SearchEngineException;
079:
080: /**
081: * Refresh the internal readers and searches that work with the spell index.
082: */
083: void refresh() throws SearchEngineException;
084:
085: /**
086: * Refresh the internal readers and searches for the given sub index that work with the spell index.
087: */
088: void refresh(String subIndex) throws SearchEngineException;
089:
090: /**
091: * Deletes the spell check index.
092: */
093: void deleteIndex() throws SearchEngineException;
094:
095: /**
096: * Deletes the spell check index for the given sub index.
097: */
098: void deleteIndex(String subIndex) throws SearchEngineException;
099:
100: /**
101: * Creates a suggest builder allowing to suggest words for the given word.
102: */
103: SearchEngineSpellCheckSuggestBuilder suggestBuilder(String word);
104:
105: /**
106: * Suggests a query based on the given query. Note, if the query was replaced/sugested
107: * then the {@link org.compass.core.CompassQuery#isSuggested()} flag will be set to
108: * <code>true</code>.
109: */
110: CompassQuery suggest(CompassQuery query);
111: }
|