在所有的搜索引擎中的中文分析器均实现Analyzer抽象类.
常用的中文分析器:
MMAnalyzer:je-analysis.jar
IK_Analyzer.jar中文解析工具组件
MIK_CAnalyzer和 IK_CAnalyzer
CJKAnalyzer:解析中日韩语言的类库
PaodingAnalyzer:解析器尚未分析.
package cn.com.vnvtrip.apache.luence.utils;
import java.io.IOException;
import java.io.StringReader;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.KeywordAnalyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.mira.lucene.analysis.IK_CAnalyzer;
import org.mira.lucene.analysis.MIK_CAnalyzer;
import cn.com.vnvtrip.apache.luence.CJKAnalyzer;
import cn.com.vnvtrip.apache.luence.ChineseAnalyzer;
public class AnalyzerTest {
public static void main(String[] args) {
String str = "中国人民共和国成立了";
ChineseAnalyzer cn = new ChineseAnalyzer();
KeywordAnalyzer kw = new KeywordAnalyzer();
CJKAnalyzer cjk = new CJKAnalyzer();
MMAnalyzer mm = new MMAnalyzer();
MIK_CAnalyzer ikk = new MIK_CAnalyzer();
IK_CAnalyzer ik = new IK_CAnalyzer();
StringReader sr = new StringReader(str);
try {
TokenStream tokenstream = mm.reusableTokenStream("testField", sr);
Token token = null;
while ((token = tokenstream.next()) != null) {
System.out.println("token start " + token.startOffset()
+ " end =" + token.endOffset() + " text="
+ token.termText());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
各种解析器解析结果如下:
MMAnalyzer :
token start 0 end =4 text=中国人民
token start 4 end =7 text=共和国
CJKAnalyzer:解析中日韩语言的类库
token start 0 end =2 text=中国
token start 1 end =3 text=国人
token start 2 end =4 text=人民
token start 3 end =5 text=民共
token start 4 end =6 text=共和
token start 5 end =7 text=和国
token start 6 end =8 text=国成
token start 7 end =9 text=成立
token start 8 end =10 text=立了
MIK_CAnalyzer:解析结果
token start 0 end =4 text=中国人民
token start 4 end =7 text=共和国
token start 7 end =9 text=成立
token start 8 end =10 text=立了
IK_CAnalyzer:解析结果
token start 0 end =4 text=中国人民
token start 0 end =3 text=中国人
token start 0 end =2 text=中国
token start 1 end =3 text=国人
token start 2 end =4 text=人民
token start 2 end =3 text=人
token start 4 end =7 text=共和国
token start 4 end =6 text=共和
token start 7 end =9 text=成立
token start 8 end =10 text=立了
token start 7 end =10 text=成立了
貌似IK_Canalyzer具有比較强大的中文分词功能.