.NET版本的Lucene - NLucene
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文件都是通用的。
NLucene作為一個全文檢索引擎,具有如下突出的優點:
1、索引文件格式獨立于應用平臺。NLucene定義了一套以8位字節為基礎的索引文件格式,使得兼容系統或者不同平臺的應用能夠共享建立的索引文件。
2、在傳統全文檢索引擎的倒排索引的基礎上,實現了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優化的目的。
3、優秀的面向對象的系統架構,使得對于NLucene擴展的學習難度降低,方便擴充新功能。
4、設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創立,用戶擴展新的語言和文件格式,只需要實現文本分析的接口。
5、已經默認實現了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統可獲得強大的查詢能力,NLucene的查詢實現中默認實現了布爾操作、模糊查詢(Fuzzy Search)、分組查詢等等。