NLucene研究系列(1)-概述
Definition
Lucene是Apache软件基金会Jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene的原作者是Doug Cutting,他是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些Internet底层架构的研究。早先发布在作者自己的http://www.lucene.com/,后来发布在SourceForge,2001年年底成为apache软件基金会Jakarta的一个子项目:http://jakarta.apache.org/lucene/。
NLucene是Lucene在.Net环境中的实现,其基本的原理和架构都是一致的,所以下文讨论的Lucene特性基本都适用于NLucene。因为文件格式等相同,所以Index文件都是通用的。
Advantage
NLucene作为一个全文检索引擎,具有如下突出的优点:
Ø 索引文件格式独立于应用平台。NLucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
Ø 在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
Ø 优秀的面向对象的系统架构,使得对于NLucene扩展的学习难度降低,方便扩充新功能。
Ø 设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
Ø 已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,NLucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search)、分组查询等等。