豆包ko 发表于 2016-12-16 10:55:25

Solr lucene的一元、二元拆词

  首先需要导入:lucene-analyzers.jar

  下面代码分词的详解:

import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;

/**
* 一元分词和二元拆词
* @author zhouguohui
*/
public class AnalyzerTest {
public static void main(String[] args) throws Exception{
String str = "测试一元分词和二元拆词拆分汉子,字母,数字等";
Standard_Analyzer(str);
Chiniese_Analyzer(str);
CJK_Analyzer(str);
}
public static void Standard_Analyzer(String str) throws Exception{
Analyzer analyzer = new StandardAnalyzer();      
Reader r = new StringReader(str);      
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.out.println("=====StandardAnalyzer   默认没有词只有字(一元分词)====");
Token t;      
while ((t = sf.next()) != null) {      
System.out.println(t.termText());      
}   
}
public static void Chiniese_Analyzer(String str) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();      
Reader r = new StringReader(str);      
TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);
System.out.println("=====chinese analyzer   基本等同StandardAnalyzer(一元分词)====");
Token t;      
while ((t = tf.next()) != null) {      
System.out.println(t.termText());      
}   
}
public static void CJK_Analyzer(String str) throws Exception{
Analyzer analyzer = new CJKAnalyzer();      
Reader r = new StringReader(str);      
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.out.println("=====CJKAnalyzer       交叉双字分割(二元分词)====");
Token t;      
while ((t = sf.next()) != null) {      
System.out.println(t.termText());      
}   
}
}

  运行结果为:

=====StandardAnalyzer   默认没有词只有字(一元分词)====




















=====chinese analyzer   基本等同StandardAnalyzer(一元分词)====




















=====CJKAnalyzer       交叉双字分割(二元分词)====
测试
试一
一元
元分
分词
词和
和二
二元
元拆
拆词
词拆
拆分
分汉
汉子
字母
数字
字等

  这两者没有什么太大的区别,第二种对中文分词支持的效果更好一些
页: [1]
查看完整版本: Solr lucene的一元、二元拆词