開放源代碼的全文檢索引擎 Lucene
大小:257 人氣: 2010-02-10 需要積分:0
標簽:開放源代碼(8283)
開放源代碼的全文檢索引擎 Lucene――介紹、系統(tǒng)結構與源碼實現(xiàn)分析
?
第一節(jié) 全文檢索系統(tǒng)與Lucene簡介
?
一、???????????? 什么是全文檢索與全文檢索系統(tǒng)?
?
全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數和位置,當用戶查詢時,檢索程序就根據事先建立的索引進行查找,并將查找的結果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。
?
全文檢索的方法主要分為按字檢索和按詞檢索兩種。按字檢索是指對于文章中的每一個字都建立索引,檢索時將詞分解為字的組合。對于各種不同的語言而言,字有不同的含義,比如英文中字與詞實際上是合一的,而中文中字與詞有很大分別。按詞檢索指對文章中的詞,即語義單位建立索引,檢索時按詞檢索,并且可以處理同義項等。英文等西方文字由于按照空白切分詞,因此實現(xiàn)上與按字處理類似,添加同義處理也很容易。中文等東方文字則需要切分字詞,以達到按詞索引的目的,關于這方面的問題,是當前全文檢索技術尤其是中文全文檢索技術中的難點,在此不做詳述。
?
全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務的軟件系統(tǒng)。一般來說,全文檢索需要具備建立索引和提供查詢的基本功能,此外現(xiàn)代的全文檢索系統(tǒng)還需要具有方便的用戶接口、面向WWW[1]的開發(fā)接口、二次應用開發(fā)接口等等。功能上,全文檢索系統(tǒng)核心具有建立索引、處理查詢返回結果集、增加索引、優(yōu)化索引結構等等功能,外圍則由各種不同應用具有的功能組成。結構上,全文檢索系統(tǒng)核心具有索引引擎、查詢引擎、文本分析引擎、對外接口等等,加上各種外圍應用系統(tǒng)等等共同構成了全文檢索系統(tǒng)。圖1.1展示了上述全文檢索系統(tǒng)的結構與功能。
?
?
在上圖中,我們看到:全文檢索系統(tǒng)中最為關鍵的部分是全文檢索引擎,各種應用程序都需要建立在這個引擎之上。一個全文檢索應用的優(yōu)異程度,根本上由全文檢索引擎來決定。因此提升全文檢索引擎的效率即是我們提升全文檢索應用的根本。另一個方面,一個優(yōu)異的全文檢索引擎,在做到效率優(yō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]的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
?
Lucene的原作者是Doug Cutting,他是一位資深全文索引/檢索專家,曾經是V-Twin搜索引擎[6]的主要開發(fā)者,后在Excite[7]擔任高級系統(tǒng)架構設計師,目前從事于一些Internet底層架構的研究。早先發(fā)布在作者自己的http://www.lucene.com/,后來發(fā)布在SourceForge[8],2001年年底成為apache軟件基金會jakarta的一個子項目:http://jakarta.apache.org/lucene/。
?
三、???????????? Lucene的應用、特點及優(yōu)勢
?
作為一個開放源代碼項目,Lucene從問世之后,引發(fā)了開放源代碼社群的巨大反響,程序員們不僅使用它構建具體的全文檢索應用,而且將之集成到各種系統(tǒng)軟件中去,以及構建Web應用,甚至某些商業(yè)軟件也采用了Lucene作為其內部全文檢索子系統(tǒng)的核心。apache軟件基金會的網站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse[9]的2.1版本中也采用了Lucene作為幫助子系統(tǒng)的全文索引引擎,相應的IBM的商業(yè)軟件Web Sphere[10]中也采用了Lucene。Lucene以其開放源代碼的特性、優(yōu)異的索引結構、良好的系統(tǒng)架構獲得了越來越多的應用。
?
Lucene作為一個全文檢索引擎,其具有如下突出的優(yōu)點:
(1)索引文件格式獨立于應用平臺。Lucene定義了一套以8位字節(jié)為基礎的索引文件格式,使得兼容系統(tǒng)或者不同平臺的應用能夠共享建立的索引文件。
(2)在傳統(tǒng)全文檢索引擎的倒排索引的基礎上,實現(xiàn)了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優(yōu)化的目的。
(3)優(yōu)秀的面向對象的系統(tǒng)架構,使得對于Lucene擴展的學習難度降低,方便擴充新功能。
(4)設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創(chuàng)立,用戶擴展新的語言和文件格式,只需要實現(xiàn)文本分析的接口。
(5)已經默認實現(xiàn)了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統(tǒng)可獲得強大的查詢能力,Lucene的查詢實現(xiàn)中默認實現(xiàn)了布爾操作、模糊查詢(Fuzzy Search[11])、分組查詢等等。
?
??? 面對已經存在的商業(yè)全文檢索引擎,Lucene也具有相當的優(yōu)勢。首先,它的開發(fā)源代碼發(fā)行方式(遵守Apache Software License[12]),在此基礎上程序員不僅僅可以充分的利用Lucene所提供的強大功能,而且可以深入細致的學習到全文檢索引擎制作技術和面相對象編程的實踐,進而在此基礎上根據應用的實際情況編寫出更好的更適合當前應用的全文檢索引擎。在這一點上,商業(yè)軟件的靈活性遠遠不及Lucene。其次,Lucene秉承了開放源代碼一貫的架構優(yōu)良的優(yōu)勢,設計了一個合理而極具擴充能力的面向對象架構,程序員可以在Lucene的基礎上擴充各種功能,比如擴充中文處理能力,從文本擴充到HTML、PDF[13]等等文本格式的處理,編寫這些擴展的功能不僅僅不復雜,而且由于Lucene恰當合理的對系統(tǒng)設備做了程序上的抽象,擴展的功能也能輕易的達到
非常好我支持^.^
(1) 100%
不好我反對
(0) 0%
下載地址
開放源代碼的全文檢索引擎 Lucene下載
相關電子資料下載
- 2021年阿里云開源鏡像站最熱門鏡像王全梳理! 2040
- 基于開發(fā)一種開放源代碼的機器人手臂 2220
- Google計劃使用Android開放源代碼項目 1541
- 開放源代碼ROM監(jiān)控器RedBoot的功能特點及調試技巧分析 1910
- HarmonyOS 2.0現(xiàn)在正式開放源代碼 2021年10月前用于4GB以上設備 6914
- Google宣布開放使用“將開放源代碼的哲學和定義擴展到項目商標” 1166
- 圖形處理單元和開放源代碼的共享 讓自動無人機技術得到了顯著提升 421
- Tomcat服務器是一個免費的開放源代碼的Web應用服務器 22216
- Facebook 人工智能團隊已經創(chuàng)建并正在開放源代碼 PyTorch Biggraph 3558
- Linux和開放源代碼在云計算中的應用 110