package com.tistory.devyongsik.analyzer;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.apache.lucene.analysis.TokenStream;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.tistory.devyongsik.analyzer.dictionary.DictionaryFactory;
import com.tistory.devyongsik.analyzer.util.AnalyzerTestUtil;
import com.tistory.devyongsik.analyzer.util.TestToken;
public class KoreanSynonymEngineTest extends AnalyzerTestUtil {
private List<String> synonymWordList = null;
private List<Engine> engines = null;
private DictionaryFactory dictionaryFactory = null;
private List<TestToken> nouns = null;
@Before
public void setUp() throws Exception {
synonymWordList = Lists.newArrayList();
engines = Lists.newArrayList();
dictionaryFactory = DictionaryFactory.getFactory();
nouns = Lists.newArrayList();
synonymWordList.add("노트북");
synonymWordList.add("노트북pc");
synonymWordList.add("노트북컴퓨터");
synonymWordList.add("노트북피씨");
synonymWordList.add("notebook");
engines.add(new KoreanSynonymEngine());
dictionaryFactory.setSynonymList(synonymWordList);
}
@Test
public void testSynonym() throws IOException {
StringReader reader = new StringReader("노트북");
nouns.add(getToken("노트북", 0, 3));
nouns.add(getToken("노트북pc", 0, 3));
nouns.add(getToken("노트북컴퓨터", 0, 3));
nouns.add(getToken("노트북피씨", 0, 3));
nouns.add(getToken("notebook", 0, 3));
TokenStream stream = new KoreanNounFilter(new KoreanCharacterTokenizer(reader), engines);
stream.reset();
List<TestToken> extractedTokens = collectExtractedNouns(stream);
stream.close();
verify(nouns, extractedTokens);
}
}