`
caozuiba
  • 浏览: 904954 次
文章分类
社区版块
存档分类
最新评论

DotLucene源码浅读笔记(1)补遗:编写简单中文分词器ChineseAnalyzer

 
阅读更多
<iframe marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
原理部分,可以参考DotLucene源码浅读笔记(1) : Lucene.Net.Analysis ,本篇是依据上篇文章的分析,编写出的简单中文分词器(ChineseAnalyzer).
DotLucene源码浅读笔记(1) : Lucene.Net.Analysis可以知道,与分词有关的主要是两个基类:

词法分析器(Analyzer) :词法过滤和分析的类,实际上是对分词器, 过滤器的综合包装类。

分词器(Tokenizer):对文本进行分词,可能是单字,词,二元切分等等。


而最基础的概念是Token,Token是DotLucene最基本的单位,以单字切分则每个单字为一个Token,如果以中文分词来切分则每个词为一个Token,

另外,中文分词器ChineseAnalyzer并不是中文分词,中文分词器仅仅是对中文分词的结果分析成DotLucene索引器能够认识的格式,

先实现分词器(Tokenizer),代码中用了一个第三方的分词组件做实验.


中文分析器(Analyzer)代码:

publicclassChineseAnalyzer:Analyzer
{
publicChineseAnalyzer()
{
}

publicoverrideTokenStreamTokenStream(TextReaderreader)
{
TokenStreamresult
=newChineseTokenizer(reader);
result
=newLowerCaseFilter(result);
//result=newStopFilter(result,stopSet);//你还可以自己编写过滤器。

returnresult;
}

}
上面是一个简单的DotLucene的ChineseAnalyzer,算法并不是最优的.主要用于理解如何实现ChineseAnalyzer

文中涉及到的中文分词组件:点此下载,中文分词组件版权归原作者所有,此出提供下载是为了大家学习之方便.用于商业目的,请自行联系作者.

/**////<summary>
///DotLucene中文分词器
///Author:邝伟科 http://www.cnblogs.com/kwklover
///dated:2006/10/24
///</summary>

publicclassChineseTokenizer:Tokenizer
{
privateList<string>ioBuffer;
privateintoffSet=0;//偏移量.
privateintposition=-1;//词汇在缓冲中的位置.
privateintlength=0;//词汇的长度.
privateintstart=0;//开始偏移量.

publicChineseTokenizer(System.IO.TextReaderinput)
:
base(input)
{
//这里用了一个第三方的中文分词组件.
ioBuffer=Sj110.Com.Chinese.Tokenizer.Tokenize(input.ReadToEnd());
}


//DotLucene的分词器简单来说,就是实现Tokenizer的Next方法,把分解出来的每一个词构造为一个Token,因为Token是DotLucene分词的基本单位。
publicoverrideTokenNext()
{
position
++;
if(position<ioBuffer.Count)
{
length
=ioBuffer[position].Length;
start
=offSet;
offSet
+=length;
returnnewToken(ioBuffer[position],start,start+length);
}


returnnull;
}

}
分享到:
评论

相关推荐

    dotlucene 源码 开发包

    dotlucene 源码 开发包 包括dotlucene1.9.1源码+Demo 学习资料:http://www.cnblogs.com/idior/category/21216.html http://www.cnblogs.com/kwklover/category/62322.html

    DotLucene演示源码.rar

    DotLucene实际是Lucene的Asp.net版本,也称为lucene.net 该项目的原型为DotLuceneAPISearchDemo-1.1,后经51aspx升级为Asp.net2.0版本并改为WebApplication类型 该demo演示了Lucene的常用功能(智能分词、关键字...

    商业源码-编程源码-DotLucene演示源码.zip

    商业源码-编程源码-DotLucene演示源码.zip

    DotLucene演示源码

    DotLucene演示源码 DotLucene实际是Lucene的Asp.net版本,也称为lucene.net 该demo演示了Lucene的常用功能(智能分词、关键字高亮等)

    ShootSearch (基于dotlucene的c#开源搜索引擎)

    ShootSearch是一个c#编写的基于dotlucene的开源搜索引擎.其目标是能够检索http,ftp,本地,本地网络邻居四类资源. 已经完成http部分. 测试DEMO: 新浪&搜狐首页开始所有www开头的主机,13分钟54.5 MB 985个文件 60...

    dotlucene信息检索高亮显示

    dotlucene信息检索高亮显示

    迅龙中文Web搜索引擎源码

    迅龙中文Web搜索引擎是基于.NET的面向Web的信息检索解决方案。开发使用了dotLucene、WordNet、Program#等开源项目。在HTML和RSS的基础搜索模块...项目还采用了中文分词、集群文件系统、数据过滤、广告智能匹配等技术。

    Lucene结合Sql建立索引Demo源码

    Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的...

    Lucene结合Sql建立索引Demo源码.rar

    Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,...

    站内搜索(Lucene.net)测试

    Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用...支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家

    Lucene结合Sql建立索引

    Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. ...支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家

    UindexWeb搜索

    UindexWeb搜索是一个完整的蜘蛛程序,他的...开源的DotLucene作为索引器,他也是开源的,使用C#语言编写, 与Java版本的Lucene兼容,而且只需将索引文件放到服务器目录 就能实现搜索,再加上ASP.Net的支持,简直就是必然选择.

    Lucene.Net 2.0 源码+文档

    Lucene.Net 2.0 源码+文档

    Cuyahoga源码

    一款.net平台开源CMS内容管理框架,可用于学习NHibernate、dotLucene、Castle等开源框架,以及Web建站的二次开发等用途。

    DotLuceneAPISearchDemo-1.1.zip

    DotLucene,Demo

    利用Lucene.NET建立SQL数据库记录索引文件程序C#源代码(包含数据库结构)

    对初学使用dotlucent作站...利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是用VS.NET2008开发的。 应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。

    asp.netDotLucene演示

    DotLucene实际是Lucene的Asp.net版本,也称为lucene.net 该项目的原型为DotLuceneAPISearchDemo-1.1,后经51aspx升级为Asp.net2.0版本并改为WebApplication类型 该demo演示了Lucene的常用功能(智能分词、关键字高亮...

    lucene

    www.dotlucene.net.zip

    Lucene结合Sql建立索引Demo

    Lucene结合Sql建立索引Demo源码,Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能。Lucene的使用者不需要深入了解有关全文检索的...

Global site tag (gtag.js) - Google Analytics