Filter:   InfoImg
download XFactory.java
Language: Java
License: AL20
Copyright: Copyright 2007 The Apache Software Foundation
LOC: 51
Project Info
paoding - Lucene?????????? Paoding's Knives(paoding)
Server: Google
Type: svn
...\lucene\analysis\xanalyzer\
   Main0.java
   Main1.java
   TestHighLight.java
   TokenCollector.java
   XAnalyzer.java
   XFactory.java
   XQueryAnalyzer.java
   XTokenizer.java
   XWriterAnalyzer.java

/**
 * Copyright 2007 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.sohospace.lucene.analysis.xanalyzer;

import com.sohospace.paoding.LetterKnife;
import com.sohospace.paoding.NumberKnife;
import com.sohospace.paoding.Paoding;
import com.sohospace.paoding.cjk.CJKDictionaryFactory;
import com.sohospace.paoding.cjk.CJKKnife;
import com.sohospace.paoding.cjk.FileWordsLoader;

public class XFactory {

	private static Paoding paoding;

	private static XAnalyzer queryAnalyzer;

	private static XAnalyzer writerAnalyzer;

	public static XAnalyzer getQueryAnalyzer() {
		if (queryAnalyzer == null) {
			synchronized (XFactory.class) {
				if (queryAnalyzer == null) {
					queryAnalyzer = new XQueryAnalyzer(getPaoding());
				}
			}
		}
		return queryAnalyzer;
	}

	public static XAnalyzer getWriterAnalyzer() {
		if (writerAnalyzer == null) {
			synchronized (XFactory.class) {
				if (writerAnalyzer == null) {
					writerAnalyzer = new XWriterAnalyzer(getPaoding());
				}
			}
		}
		return writerAnalyzer;
	}

	public static Paoding getPaoding() {
		if (paoding == null) {
			synchronized (XFactory.class) {
				if (paoding == null) {
					CJKDictionaryFactory cjkDicFactory = createDicFactory();
					paoding = new Paoding();
					paoding.addKnife(new CJKKnife(cjkDicFactory));
					paoding.addKnife(new LetterKnife());
					paoding.addKnife(new NumberKnife(cjkDicFactory.getUnits()));
				}
			}
		}
		return paoding;
	}

	private static CJKDictionaryFactory createDicFactory() {
		CJKDictionaryFactory cjkDicFactory = new CJKDictionaryFactory();
		cjkDicFactory.setWordsLoader(new FileWordsLoader("dic/CJK"));
		return cjkDicFactory;
	}
}