package cn.zqh.lucene.analyzer; import java.io.IOException; import java.io.StringReader; import jeasy.analysis.MMAnalyzer; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.SimpleAnalyzer; import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.junit.Test; /** *@author zqh */ public class AnalyzerTest { String text="IndexWriter addDocument's a javadoc.txt"; String zhText="我们是中国人"; Analyzer an1 = new StandardAnalyzer();//支持英文分词器 Analyzer an2 = new SimpleAnalyzer(); //支持英文 点 分词器 Analyzer an3 = new CJKAnalyzer(); //二分法分词 Analyzer an4 = new MMAnalyzer(); //词库分词 使用词库分词时要导入je-analyzer-1.5.1jar @Test public void test() throws IOException{ //analyzer(an2,text); analyzer(an4,zhText); } public void analyzer(Analyzer analyzer,String text) throws IOException{ System.out.println("----当前使用的分词器-------"+analyzer.getClass()); System.out.println("----------被分词的文本---"+text); System.out.println("----------分词后如下---"); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text)); for(Token token = new Token();(token =tokenStream.next()) !=null; ){ System.out.println(token); } } /** * 打印结果: * an1分词器: ----当前使用的分词器-------class org.apache.lucene.analysis.standard.StandardAnalyzer ----------被分词的文本---IndexWriter addDocument's a javadoc.txt ----------分词后如下--- (indexwriter,0,11,type=<ALPHANUM>) (adddocument,12,25,type=<APOSTROPHE>) (javadoc.txt,28,39,type=<HOST>) an2分词器: ----当前使用的分词器-------class org.apache.lucene.analysis.SimpleAnalyzer ----------被分词的文本---IndexWriter addDocument's a javadoc.txt ----------分词后如下--- (indexwriter,0,11) (adddocument,12,23) (s,24,25) (a,26,27) (javadoc,28,35) (txt,36,39) an1分词器,zhText ----当前使用的分词器-------class org.apache.lucene.analysis.standard.StandardAnalyzer ----------被分词的文本---我们是中国人 ----------分词后如下--- (我,0,1,type=<CJ>) (们,1,2,type=<CJ>) (是,2,3,type=<CJ>) (中,3,4,type=<CJ>) (国,4,5,type=<CJ>) (人,5,6,type=<CJ>) an3分词器:zhText ----当前使用的分词器-------class org.apache.lucene.analysis.cjk.CJKAnalyzer ----------被分词的文本---我们是中国人 ----------分词后如下--- (我们,0,2,type=double) (们是,1,3,type=double) (是中,2,4,type=double) (中国,3,5,type=double) (国人,4,6,type=double) an4分词器:zhText ----当前使用的分词器-------class jeasy.analysis.MMAnalyzer ----------被分词的文本---我们是中国人 ----------分词后如下--- (我们,0,2) 解释:从0开始到第2个字符(不包含2) 0/1 (中国人,3,6) 从3开始到第六个字符 */ }