package cn.itcast.lucene.analyzer;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class analyzer {
@Test
public void test1() throws IOException {
// (hello,0,5,type=<ALPHANUM>)
// (i,9,10,type=<ALPHANUM>)
// (am,12,14,type=<ALPHANUM>)
// (boy,17,20,type=<ALPHANUM>)
Analyzer analyzer1 = new StandardAnalyzer();// 单字分词
String Text1 = "hello ! i am a boy";
// (你好,0,2,type=double)
// (我是,3,5,type=double)
// (是中,4,6,type=double)
// (中国,5,7,type=double)
// (国人,6,8,type=double)
Analyzer analyzer2 = new CJKAnalyzer();// 二分分词
String Text2 = "你好 我是中国人";
// (你,0,1)
// (好,1,2)
// (我,3,4)
// (是,4,5)
// (中,5,6)
// (国,6,7)
// (人,7,8)
Analyzer analyzer3 = new ChineseAnalyzer();
String Text3 = "你好 我是中国人";
// (你好,0,2)
// (我是,3,5)
// (中国人,5,8)
// (这个东西,10,14)
// (是谁,14,16)
// (把他,19,21)
// (丢掉,21,23)
// (我在,23,25)
// (上课,25,27)
// 该分词器要导入jar包 je-analysis-1.5.1.jar
Analyzer analyzer4 = new MMAnalyzer();// 词库分词
String Text4 = "你好 我是中国人 这个东西是谁的 把他丢掉我在上课";
}
public void testAnalyer(Analyzer analyzer, String text) throws IOException {
Reader reader = new StringReader(text);
TokenStream tokenStream = analyzer.tokenStream("content", reader);
Token token = new Token();
while ((token = tokenStream.next(token)) != null) {
System.out.println(token);
}
}
}
在上面的几个分词器中 对中文和英文分词支持比较好的是MMAnalyzer(); je 分词器 此外还有IKAnalyzer.jar分词器 但是他对lucene2.4.1不兼容 需要较高的版本
本文介绍了Lucene中几种常见的分词器,包括StandardAnalyzer、CJKAnalyzer、ChineseAnalyzer及MMAnalyzer等,重点对比了它们对中文和英文文本的处理效果,并推荐了MMAnalyzer作为中文分词的较好选择。
494

被折叠的 条评论
为什么被折叠?



