天天看點

java lucene 中文分詞_lucene2.4內建幾種中文分詞執行個體代碼

package com.test;

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.TokenStream;

import org.apache.lucene.analysis.cjk.CJKAnalyzer;

import org.apache.lucene.analysis.cn.ChineseAnalyzer;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.mira.lucene.analysis.IK_CAnalyzer;

import org.mira.lucene.analysis.MIK_CAnalyzer;

public class All_Test {

private static String string = "書客網www.8211.cn計算機電子文檔分享平台";

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====");

System.out.println("分析方法:預設沒有詞隻有字(一進制分詞)");

Token t;

while ((t = sf.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====");

System.out.println("分析方法:交叉雙字分割(二進制分詞)");

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====");

System.out.println("分析方法:基本等同StandardAnalyzer(一進制分詞)");

Token t;

while ((t = tf.next()) != null) {

System.out.println(t.termText());

}

}

public static void ik_CAnalyzer(String str) throws Exception{

Analyzer analyzer = new MIK_CAnalyzer();

// Analyzer analyzer = new IK_CAnalyzer();

Reader r = new StringReader(str);

TokenStream ts = (TokenStream)analyzer.tokenStream("", r);

System.out.println("=====IK_CAnalyzer====");

System.out.println("分析方法:字典分詞,正反雙向搜尋");

Token t;

while ((t = ts.next()) != null) {

System.out.println(t.termText());

}

}

public static void main(String[] args) throws Exception{

String str = string;

System.out.println("我們測試的字元串是:"+str);

Standard_Analyzer(str);

CJK_Analyzer(str);

Chiniese_Analyzer(str);

ik_CAnalyzer(str);

}

}

我們測試的字元串是:書客網www.8211.cn計算機電子文檔分享平台

=====StandardAnalyzer====

分析方法:預設沒有詞隻有字(一進制分詞)

www.8211.cn

=====CJKAnalyzer====

分析方法:交叉雙字分割(二進制分詞)

書客

客網

8211

cn

計算

算機

機電

電子

子文

文檔

檔分

分享

享平

平台

=====chinese analyzer====

分析方法:基本等同StandardAnalyzer(一進制分詞)

www

cn

=====IK_CAnalyzer====

分析方法:字典分詞,正反雙向搜尋

書客網

www

8211

cn

計算機

機電

電子

文檔

分享

平台