CLucene的代碼組織還是比較清晰的,本文以CLucene1.0爲例,主要分爲以下幾個部分:
analysis
模塊主要負責詞法分析及語言處理,從而生成Term。也包括各種分析器
config
各種編譯配置選項,以及一些與OS平臺相關的內容。
debug
各種斷言異常處理宏定義,錯誤常量。還自帶一個內存泄漏跟蹤工具和內存池
document
一個document對象就是用戶提供的一篇文檔,可以包括多個Field
index
模塊主要負責索引的創建,如何讀取索引,重要的類裏IndexWriter,DocumentWriter,IndexReader,SegmentMerger,SegmentReader.
IndexWriter和DocumentWriter:負責創建索引
SegmentReader和IndexReader:負責讀取索引
Segmentmerger:負責索引的合併
queryparser
Lucene自帶的查詢引擎。負責解析用戶的輸入,可以通過掃描用戶輸入的字符串,生成各種Query對象。Clucene中支持模糊查詢,語義查詢,短語查詢,組合查詢等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等。
Search
模塊主要負責對索引的搜索,打分,和排序。
Store
主要負責對索引的存儲。FSDirectory和RAMDistory是兩個重要的類,一個實現了對磁盤的跨平臺讀寫,另一個是把內存當成磁盤。
util
一些常用的工具類。主要有:
BitVector:位數組
PriorityQueue:優先級隊列,好多地方都用到此結構。
VoidList和VoidMap:分別繼承自STL的list 和map。