Lucene.Net 核心——分词算法

时间:13-07-17 栏目:资料源码 作者:zongyan86 评论:0 点击: 4,262 次

Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,是一个Library.你也可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API(提供了完整的查询引擎和索引引擎)。利用这套API你可以做很多有关搜索的事情,而且很方便.。开发人员可以基于Lucene.net实现全文检索的功能。

注意:Lucene.Net只能对文本信息进行检索。如果不是文本信息,要转换为文本信息,比如要检索Excel文件,就要用NPOI把Excel读取成字符串,然后把字符串扔给Lucene.Net。Lucene.Net会把扔给它的文本切词保存,加快检索速度。

更多概念性的知识可以参考这篇博文:http://blog.csdn.net/xiucool/archive/2008/11/28/3397182.aspx

Lucene.Net 核心——分词算法(Analyzer)

学习Lucune.Net,分词是核心。当然最理想状态下是能自己扩展分词,但这要很高的算法要求。Lucene.Net中不同的分词算法就是不同的类。所有分词算法类都从Analyzer类继承,不同的分词算法有不同的优缺点。

内置的StandardAnalyzer是将英文按照空格、标点符号等进行分词,将中文按照单个字进行分词,一个汉字算一个词

Analyzer analyzer = new StandardAnalyzer();   
TokenStream tokenStream = analyzer.TokenStream("",new StringReader("Hello Lucene.Net,我1爱1你China"));   
Lucene.Net.Analysis.Token token = null;   
while ((token = tokenStream.Next()) != null)   
{   
    Console.WriteLine(token.TermText());   
}  

分词后结果:

二元分词算法,每两个汉字算一个单词,“我爱你China”会分词为“我爱 爱你 china”,点击查看二元分词算法CJKAnalyzer。

Analyzer analyzer = new CJKAnalyzer();   
TokenStream tokenStream = analyzer.TokenStream("", new StringReader("我爱你中国China中华人名共和国"));   
Lucene.Net.Analysis.Token token = null;   
while ((token = tokenStream.Next()) != null)   
{   
    Response.Write(token.TermText()+"<br/>");   
} 

这时,你肯定在想,上面没有一个好用的,二元分词算法乱枪打鸟,很想自己扩展Analyzer,但并不是算法上的专业人士。怎么办?

天降圣器,盘古分词,点击下载


转自http://oceaneyes.cnblogs.com/

web开发分享



声明: 本文由( zongyan86 )原创编译,转载请保留链接: Lucene.Net 核心——分词算法

关注我们