官术网_书友最值得收藏!

3.5.1 整體結構

在Lucene中,org.apache.lucene.index.TermInfosReader類的getIndexOffset()方法實現了一個類似的折半查找。對于特別大的順序集合可以通過采用插值法提高查找速度。

Lucene的整體結構如圖3-14所示。

圖3-14 Lucene原理圖

可以使用SVN客戶端從https://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/下載正在開發中的Lucene源代碼。

Lucene源碼分為核心包和外圍功能包:核心包實現搜索功能;外圍功能包實現高亮顯示等輔助功能。Lucene源碼的核心包中共包括7個子包,每個子包完成特定的功能。

最基本的是索引管理包 (org.apache.lucene.index) 和檢索管理包(org.apache.lucene.search)。索引管理包實現索引的建立、刪除等。檢索管理包根據查詢條件,檢索得到結果。

索引管理包調用數據存儲管理包(org.apache.lucene.store),主要包括一些底層的I/O操作。同時也會調用一些公用的算法類 (org.apache.lucene.util)。編碼管理包(org.apache.lucene.codecs)用于方便自定義索引的編碼和結構。文檔結構包(org.apache.lucene.document)用于描述索引存儲時的文檔結構管理,類似于關系型數據庫的表結構。

查詢分析器包(org.apache.lucene.queryParser)實現查詢語法,支持關鍵詞間的運算,如與、或、非等。語言分析器(org.apache.lucene.analysis)主要用于對放入索引的文檔和查詢詞切詞,支持中文主要是擴展此類。

下面先介紹索引是如何生成的,然后介紹查詢原理。

主站蜘蛛池模板: 隆德县| 泾源县| 芜湖市| 枣庄市| 辉县市| 南投市| 屏边| 南通市| 六枝特区| 安新县| 万盛区| 新乡县| 东乡族自治县| 芦山县| 武隆县| 葫芦岛市| 哈巴河县| 同德县| 措美县| 韶关市| 富蕴县| 南投县| 五大连池市| 合江县| 泗阳县| 鄂伦春自治旗| 金门县| 建德市| 吉水县| 额敏县| 剑河县| 漯河市| 婺源县| 卢氏县| 黎平县| 望都县| 伊金霍洛旗| 沛县| 封丘县| 南乐县| 祁连县|