一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>Linux/uClinux/Unix編程>

開放源代碼的全文檢索引擎 Lucene

大?。?/span>257 人氣: 2010-02-10 需要積分:0
{$username}的空間

用戶級別:注冊會員

貢獻文章:

貢獻資料:

開放源代碼的全文檢索引擎 Lucene
――介紹、系統(tǒng)結(jié)構(gòu)與源碼實現(xiàn)分析
?
第一節(jié) 全文檢索系統(tǒng)與Lucene簡介
?
一、???????????? 什么是全文檢索與全文檢索系統(tǒng)?
?
全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,檢索程序就根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。
?
全文檢索的方法主要分為按字檢索和按詞檢索兩種。按字檢索是指對于文章中的每一個字都建立索引,檢索時將詞分解為字的組合。對于各種不同的語言而言,字有不同的含義,比如英文中字與詞實際上是合一的,而中文中字與詞有很大分別。按詞檢索指對文章中的詞,即語義單位建立索引,檢索時按詞檢索,并且可以處理同義項等。英文等西方文字由于按照空白切分詞,因此實現(xiàn)上與按字處理類似,添加同義處理也很容易。中文等東方文字則需要切分字詞,以達到按詞索引的目的,關(guān)于這方面的問題,是當前全文檢索技術(shù)尤其是中文全文檢索技術(shù)中的難點,在此不做詳述。
?
全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務(wù)的軟件系統(tǒng)。一般來說,全文檢索需要具備建立索引和提供查詢的基本功能,此外現(xiàn)代的全文檢索系統(tǒng)還需要具有方便的用戶接口、面向WWW[1]的開發(fā)接口、二次應(yīng)用開發(fā)接口等等。功能上,全文檢索系統(tǒng)核心具有建立索引、處理查詢返回結(jié)果集、增加索引、優(yōu)化索引結(jié)構(gòu)等等功能,外圍則由各種不同應(yīng)用具有的功能組成。結(jié)構(gòu)上,全文檢索系統(tǒng)核心具有索引引擎、查詢引擎、文本分析引擎、對外接口等等,加上各種外圍應(yīng)用系統(tǒng)等等共同構(gòu)成了全文檢索系統(tǒng)。圖1.1展示了上述全文檢索系統(tǒng)的結(jié)構(gòu)與功能。
?
?
在上圖中,我們看到:全文檢索系統(tǒng)中最為關(guān)鍵的部分是全文檢索引擎,各種應(yīng)用程序都需要建立在這個引擎之上。一個全文檢索應(yīng)用的優(yōu)異程度,根本上由全文檢索引擎來決定。因此提升全文檢索引擎的效率即是我們提升全文檢索應(yīng)用的根本。另一個方面,一個優(yōu)異的全文檢索引擎,在做到效率優(yōu)化的同時,還需要具有開放的體系結(jié)構(gòu),以方便程序員對整個系統(tǒng)進行優(yōu)化改造,或者是添加原有系統(tǒng)沒有的功能。比如在當今多語言處理的環(huán)境下,有時需要給全文檢索系統(tǒng)添加處理某種語言或者文本格式的功能,比如在英文系統(tǒng)中添加中文處理功能,在純文本系統(tǒng)中添加XML[2]或者HTML[3]格式的文本處理功能,系統(tǒng)的開放性和擴充性就十分的重要。
?
二、???????????? 什么是Lucene?
?
Lucene是apache軟件基金會[4] jakarta項目組的一個子項目,是一個開放源代碼[5]的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。
?
Lucene的原作者是Doug Cutting,他是一位資深全文索引/檢索專家,曾經(jīng)是V-Twin搜索引擎[6]的主要開發(fā)者,后在Excite[7]擔任高級系統(tǒng)架構(gòu)設(shè)計師,目前從事于一些Internet底層架構(gòu)的研究。早先發(fā)布在作者自己的http://www.lucene.com/,后來發(fā)布在SourceForge[8],2001年年底成為apache軟件基金會jakarta的一個子項目:http://jakarta.apache.org/lucene/。
?
三、???????????? Lucene的應(yīng)用、特點及優(yōu)勢
?
作為一個開放源代碼項目,Lucene從問世之后,引發(fā)了開放源代碼社群的巨大反響,程序員們不僅使用它構(gòu)建具體的全文檢索應(yīng)用,而且將之集成到各種系統(tǒng)軟件中去,以及構(gòu)建Web應(yīng)用,甚至某些商業(yè)軟件也采用了Lucene作為其內(nèi)部全文檢索子系統(tǒng)的核心。apache軟件基金會的網(wǎng)站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse[9]的2.1版本中也采用了Lucene作為幫助子系統(tǒng)的全文索引引擎,相應(yīng)的IBM的商業(yè)軟件Web Sphere[10]中也采用了Lucene。Lucene以其開放源代碼的特性、優(yōu)異的索引結(jié)構(gòu)、良好的系統(tǒng)架構(gòu)獲得了越來越多的應(yīng)用。
?
Lucene作為一個全文檢索引擎,其具有如下突出的優(yōu)點:
(1)索引文件格式獨立于應(yīng)用平臺。Lucene定義了一套以8位字節(jié)為基礎(chǔ)的索引文件格式,使得兼容系統(tǒng)或者不同平臺的應(yīng)用能夠共享建立的索引文件。
(2)在傳統(tǒng)全文檢索引擎的倒排索引的基礎(chǔ)上,實現(xiàn)了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優(yōu)化的目的。
(3)優(yōu)秀的面向?qū)ο蟮南到y(tǒng)架構(gòu),使得對于Lucene擴展的學(xué)習(xí)難度降低,方便擴充新功能。
(4)設(shè)計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創(chuàng)立,用戶擴展新的語言和文件格式,只需要實現(xiàn)文本分析的接口。
(5)已經(jīng)默認實現(xiàn)了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統(tǒng)可獲得強大的查詢能力,Lucene的查詢實現(xiàn)中默認實現(xiàn)了布爾操作、模糊查詢(Fuzzy Search[11])、分組查詢等等。
?
??? 面對已經(jīng)存在的商業(yè)全文檢索引擎,Lucene也具有相當?shù)膬?yōu)勢。首先,它的開發(fā)源代碼發(fā)行方式(遵守Apache Software License[12]),在此基礎(chǔ)上程序員不僅僅可以充分的利用Lucene所提供的強大功能,而且可以深入細致的學(xué)習(xí)到全文檢索引擎制作技術(shù)和面相對象編程的實踐,進而在此基礎(chǔ)上根據(jù)應(yīng)用的實際情況編寫出更好的更適合當前應(yīng)用的全文檢索引擎。在這一點上,商業(yè)軟件的靈活性遠遠不及Lucene。其次,Lucene秉承了開放源代碼一貫的架構(gòu)優(yōu)良的優(yōu)勢,設(shè)計了一個合理而極具擴充能力的面向?qū)ο蠹軜?gòu),程序員可以在Lucene的基礎(chǔ)上擴充各種功能,比如擴充中文處理能力,從文本擴充到HTML、PDF[13]等等文本格式的處理,編寫這些擴展的功能不僅僅不復(fù)雜,而且由于Lucene恰當合理的對系統(tǒng)設(shè)備做了程序上的抽象,擴展的功能也能輕易的達到

非常好我支持^.^

(1) 100%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?