ansj源码浅析1

本文介绍了Lucene分词结构的基础,重点关注ansj分词器的构造函数和工作原理。文章分析了分词器如何基于TokenStream进行分词和过滤,并展示了无近义词和有近义词情况下的分词过程。重点讨论了getResult方法在选择最优路径中的作用,为后续深入探讨图的构造和算法奠定了基础。
摘要由CSDN通过智能技术生成

开始之前先盗个图,下图是lucene分词结构的类关系图,可以看出所有的分词流都是基于TokenStream来做的。它下面有两个继承类,一个是

来分词的(Tokenizer),一个是来过滤的(TokenFilter)。我们主要来分析分词的类。

ansj分词器的构造函数如下

	public AnsjTokenizer(Analysis ta,String stopwordsDir, boolean pstemming) {
		this.ta = ta;
		this.pstemming = pstemming;
	}

这里面ta是比较重要的。ansj常用的是IndexAnalysis。回到AnsjTokenizer,这个类的核心方法如下

public final boolean incrementToken() throws IOException {
		clearAttributes();
		int position = 0;
		Term term = null;
		String name = null;
		int length = 0;
		boolean flag = true;
		do {
			term = ta.next();<span>	</span>//利用Analysis获取下一个term
			if (term == null) {
				break;
			}
			name = term.getNam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值