小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Lucene研究之二——系統(tǒng)結(jié)構(gòu)分析初步

 maomao 2005-12-11

Lucene研究之二——系統(tǒng)結(jié)構(gòu)分析初步

 

作者:陳光(holen@263.net

時(shí)間:2004-08-26

 

本文主要討論Lucene的系統(tǒng)結(jié)構(gòu),希望對(duì)其結(jié)構(gòu)的初步分析,更深入的了解Lucene的運(yùn)作機(jī)制,從而實(shí)現(xiàn)對(duì)Lucene的功能擴(kuò)展。

 

1. Lucene的包結(jié)構(gòu)

 

如上圖所示,Lucene源碼中共包括7個(gè)子包,每個(gè)包完成特定的功能:

 

Lucene包結(jié)構(gòu)功能表

包名

功能

org.apache.lucene.analysis

語(yǔ)言分析器,主要用于的切詞,支持中文主要是擴(kuò)展此類

org.apache.lucene.document

索引存儲(chǔ)時(shí)的文檔結(jié)構(gòu)管理,類似于關(guān)系型數(shù)據(jù)庫(kù)的表結(jié)構(gòu)

org.apache.lucene.index

索引管理,包括索引建立、刪除等

org.apache.lucene.queryParser

查詢分析器,實(shí)現(xiàn)查詢關(guān)鍵詞間的運(yùn)算,如與、或、非等

org.apache.lucene.search

檢索管理,根據(jù)查詢條件,檢索得到結(jié)果

org.apache.lucene.store

數(shù)據(jù)存儲(chǔ)管理,主要包括一些底層的I/O操作

org.apache.lucene.util

一些公用類

 

2. Lucene的主要邏輯圖

 

Lucene功能強(qiáng)大,但從根本上說(shuō),主要包括兩塊:一是文本內(nèi)容經(jīng)切詞后索引入庫(kù);二是根據(jù)查詢條件返回結(jié)果。

以下是上述兩大功能的邏輯圖:

 

STORAGE

(存儲(chǔ)器)

ACCESS INDEX

(訪問(wèn)索引)

SERACHER

(查詢器)

ANALYZER

(語(yǔ)言分析器)

QUERY PARSER

(查詢分析器)

DOCUMENT

(文檔結(jié)構(gòu))

SEARCHER

(查詢)

INDEXER

(入庫(kù))

 

FS

 

BDD

 

RAM

Lucene功能邏輯圖

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


查詢邏輯

 

按先后順序,查詢邏輯可分為如下幾步:

 

1.  查詢者輸入查詢條件
條件之間可以通過(guò)特定運(yùn)算符進(jìn)行運(yùn)算,比如查詢希望查詢到與“中國(guó)”和“北京”相關(guān)的記錄,但不希望結(jié)果中包括“海淀區(qū)中關(guān)村”,于是輸入條件為“中國(guó)+北京-海淀區(qū)中關(guān)村”;

2.  查詢條件被傳達(dá)到查詢分析器中,分析器將將對(duì)“中國(guó)+北京-海淀區(qū)中關(guān)村”進(jìn)行分析,首先分析器解析字符串的連接符,即這里的加號(hào)和減號(hào),然后對(duì)每個(gè)詞進(jìn)行切詞,一般最小的詞元是兩個(gè)漢字,則中國(guó)和北京兩個(gè)詞不必再切分,但對(duì)海淀區(qū)中關(guān)村需要切分,假設(shè)根據(jù)切詞算法,把該詞切分為“海淀區(qū)”和“中關(guān)村”兩部分,則最后得到的查詢條件可以表示為:“中國(guó)” AND “北京” AND NOT(“海淀區(qū)” AND “中關(guān)村”)

3.  查詢器根據(jù)這個(gè)條件遍歷索引樹,得到查詢結(jié)果,并返回結(jié)果集,返回的結(jié)果集類似于JDBC中的ResultSet。

4.  將返回的結(jié)果集顯示在查詢結(jié)果頁(yè)面,當(dāng)點(diǎn)擊某一條內(nèi)容時(shí),可以鏈接到原始網(wǎng)頁(yè),也可以打開全文檢索庫(kù)中存儲(chǔ)的網(wǎng)頁(yè)內(nèi)容。

 

這就是查詢的邏輯過(guò)程,需要說(shuō)明的是,Lucene默認(rèn)只支持英文,為了便于說(shuō)明問(wèn)題,以上查詢過(guò)程采用中文舉例,事實(shí)上,當(dāng)Lucene被擴(kuò)充支持中文后就是這么一個(gè)查詢過(guò)程。

 

入庫(kù)邏輯

 

入庫(kù)將把內(nèi)容加載到全文檢索庫(kù)中,按順序,入庫(kù)邏輯包括如下過(guò)程:

 

1.  入庫(kù)者定義到庫(kù)中文檔的結(jié)構(gòu),比如需要把網(wǎng)站內(nèi)容加載到全文檢索庫(kù),讓用戶通過(guò)“站內(nèi)檢索”搜索到相關(guān)的網(wǎng)頁(yè)內(nèi)容。入庫(kù)文檔結(jié)構(gòu)與關(guān)系型數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)類似,每個(gè)入庫(kù)的文檔由多個(gè)字段構(gòu)成,假設(shè)這里需要入庫(kù)的網(wǎng)站內(nèi)容包括如下字段:文章標(biāo)題、作者、發(fā)布時(shí)間、原文鏈接、正文內(nèi)容(一般作為網(wǎng)頁(yè)快照)。

2.  包含N個(gè)字段的文檔(DOCUMENT)在真正入庫(kù)前需要經(jīng)過(guò)切詞(或分詞)索引,切詞的規(guī)則由語(yǔ)言分析器(ANALYZER)完成。

3.  切分后的“單詞”被注冊(cè)到索引樹上,供查詢時(shí)用,另外也需要也其它不需要索引的內(nèi)容入庫(kù),所有這些是文件操作均由STORAGE完成。

 

以上就是記錄加載流程,索引樹是一種比較復(fù)雜的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),將在后續(xù)章節(jié)陸續(xù)介紹,這里就不贅述了,需要說(shuō)明的一點(diǎn)是,Lucene的索引樹結(jié)構(gòu)非常優(yōu)秀,是Lucene的一大特色。

 

接下來(lái)將對(duì)Lucene的各個(gè)子包的結(jié)構(gòu)進(jìn)行討論。

 

3. 語(yǔ)言分析包org.apache.lucene.analysis

 

 

Analyzer是一個(gè)抽象類,司職對(duì)文本內(nèi)容的切分詞規(guī)則。

 

切分后返回一個(gè)TokenStream,TokenStream中有一個(gè)非常重要方法next(),即取到下一個(gè)詞。簡(jiǎn)單點(diǎn)說(shuō),通過(guò)切詞規(guī)則,把一篇文章從頭到尾分成一個(gè)個(gè)的詞,這就是org.apache.lucene.analysis的工作。

 

<p class=M

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多