Analyzer 中文分词器

IKAnalyzer:
jar: IKAnalyzer-IKAnalyzer2012FF_u1.jar

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apdplat.word.WordSegmenter;
import org.apdplat.word.lucene.ChineseWordAnalyzer;
import org.apdplat.word.segmentation.SegmentationAlgorithm;
import org.apdplat.word.segmentation.Word;

public static void printOut(String keyword){
    Analyzer analyzer   =new IKAnalyzer();
    StringReader reader=new StringReader(keyword);

    try {
        TokenStream ts=analyzer.tokenStream("", reader);
        CharTermAttribute term=ts.getAttribute(CharTermAttribute.class);
        ts.reset();
        while(ts.incrementToken()){
            System.out.println(term.toString());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

new IKAnalyzer()的效果: (默认为false)
中华人民共和国
中华人民
中华
华人
人民共和国
人民
共和国
共和

new IKAnalyzer(true)的效果:
中华人民共和国

IKAnalyzer支持两种分词模式: false:最细粒度 true:智能分词模式

============================================

自定义分词器:(自定义,分割)
import java.io.Reader;
import java.util.regex.Pattern;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.core.LowerCaseFilter;
import org.apache.lucene.analysis.pattern.PatternTokenizer;

/**
* 正则分词器
* @author bowen_bao
*/

public class PatternAnalyzer extends Analyzer{

private Pattern pattern;
private boolean toLowerCase;

public PatternAnalyzer(String regex,boolean toLowerCase){
    this.pattern=Pattern.compile(regex);
    this.toLowerCase=toLowerCase;
}

@Override
protected TokenStreamComponents createComponents(String arg0, Reader arg1) {
    PatternTokenizer tokenizer=new PatternTokenizer(arg1,pattern,-1);
    TokenStream result =toLowerCase?new LowerCaseFilter(tokenizer):tokenizer;
    return new TokenStreamComponents(tokenizer,result);
}

}

new PatternAnalyzer(“,”,true);

======================================================

IKAnalyzer.cfg.xml为IKAnalyzer的配置文件 ,放在resources 下面
ext_dict 为扩展字典
ext_stopwords 为停止词字典

=================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值