01: /*
02: * Copyright 2004-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.compass.core.lucene.engine.analyzer;
18:
19: import org.apache.lucene.analysis.Analyzer;
20: import org.apache.lucene.analysis.br.BrazilianAnalyzer;
21: import org.apache.lucene.analysis.cjk.CJKAnalyzer;
22: import org.apache.lucene.analysis.cn.ChineseAnalyzer;
23: import org.apache.lucene.analysis.cz.CzechAnalyzer;
24: import org.apache.lucene.analysis.de.GermanAnalyzer;
25: import org.apache.lucene.analysis.el.GreekAnalyzer;
26: import org.apache.lucene.analysis.fr.FrenchAnalyzer;
27: import org.apache.lucene.analysis.nl.DutchAnalyzer;
28: import org.apache.lucene.analysis.ru.RussianAnalyzer;
29: import org.compass.core.config.CompassSettings;
30: import org.compass.core.engine.SearchEngineException;
31: import org.compass.core.lucene.LuceneEnvironment;
32:
33: /**
34: *
35: * @author kimchy
36: *
37: */
38: public class ExtendedAnalyzerBuilderDelegate implements
39: AnalyzerBuilderDelegate {
40:
41: public Analyzer buildAnalyzer(String analyzerName,
42: CompassSettings settings,
43: DefaultLuceneAnalyzerFactory analyzerFactory)
44: throws SearchEngineException {
45:
46: String analyzerSetting = settings.getSetting(
47: LuceneEnvironment.Analyzer.TYPE,
48: LuceneEnvironment.Analyzer.CoreTypes.STANDARD);
49:
50: Analyzer analyzer = null;
51: if (LuceneEnvironment.Analyzer.ExtendedTypes.BRAZILIAN
52: .equalsIgnoreCase(analyzerSetting)) {
53: analyzer = new BrazilianAnalyzer(analyzerFactory
54: .parseStopWords(analyzerName, settings,
55: BrazilianAnalyzer.BRAZILIAN_STOP_WORDS));
56: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.CJK
57: .equalsIgnoreCase(analyzerSetting)) {
58: analyzer = new CJKAnalyzer(analyzerFactory.parseStopWords(
59: analyzerName, settings, CJKAnalyzer.STOP_WORDS));
60: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.CHINESE
61: .equalsIgnoreCase(analyzerSetting)) {
62: analyzer = new ChineseAnalyzer();
63: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.CZECH
64: .equalsIgnoreCase(analyzerSetting)) {
65: analyzer = new CzechAnalyzer(analyzerFactory
66: .parseStopWords(analyzerName, settings,
67: CzechAnalyzer.CZECH_STOP_WORDS));
68: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.GERMAN
69: .equalsIgnoreCase(analyzerSetting)) {
70: analyzer = new GermanAnalyzer(analyzerFactory
71: .parseStopWords(analyzerName, settings,
72: GermanAnalyzer.GERMAN_STOP_WORDS));
73: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.GREEK
74: .equalsIgnoreCase(analyzerSetting)) {
75: analyzer = new GreekAnalyzer();
76: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.FRENCH
77: .equalsIgnoreCase(analyzerSetting)) {
78: analyzer = new FrenchAnalyzer(analyzerFactory
79: .parseStopWords(analyzerName, settings,
80: FrenchAnalyzer.FRENCH_STOP_WORDS));
81: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.DUTCH
82: .equalsIgnoreCase(analyzerSetting)) {
83: analyzer = new DutchAnalyzer(analyzerFactory
84: .parseStopWords(analyzerName, settings,
85: DutchAnalyzer.DUTCH_STOP_WORDS));
86: } else if (LuceneEnvironment.Analyzer.ExtendedTypes.RUSSIAN
87: .equalsIgnoreCase(analyzerSetting)) {
88: analyzer = new RussianAnalyzer();
89: }
90:
91: return analyzer;
92: }
93: }
|