?????? Lucene
是apache軟件基金會jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
作為一個開放源代碼項目,Lucene從問世之后,引發了開放源代碼社群的巨大反響,程序員們不僅使用它構建具體的全文檢索應用,而且將之集成到各種系統軟件中去,以及構建Web應用,甚至某些商業軟件也采用了Lucene作為其內部全文檢索子系統的核心。apache軟件基金會的網站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse的2.1版本中也采用了Lucene作為幫助子系統的全文索引引擎,相應的IBM的商業軟件Web Sphere中也采用了Lucene。Lucene以其開放源代碼的特性、優異的索引結構、良好的系統架構獲得了越來越多的應用。
Lucene
作為一個全文檢索引擎,其具有如下突出的優點:
(1)索引文件格式獨立于應用平臺。Lucene定義了一套以8位字節為基礎的索引文件格式,使得兼容系統或者不同平臺的應用能夠共享建立的索引文件。
(2)在傳統全文檢索引擎的倒排索引的基礎上,實現了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優化的目的。
(3)優秀的面向對象的系統架構,使得對于Lucene擴展的學習難度降低,方便擴充新功能。
(4)設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創立,用戶擴展新的語言和文件格式,只需要實現文本分析的接口。
(5)已經默認實現了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統可獲得強大的查詢能力,Lucene的查詢實現中默認實現了布爾操作、模糊查詢(Fuzzy Search)、分組查詢等等。
面對已經存在的商業全文檢索引擎,Lucene也具有相當的優勢。首先,它的開發源代碼發行方式(遵守Apache Software License),在此基礎上程序員不僅僅可以充分的利用Lucene所提供的強大功能,而且可以深入細致的學習到全文檢索引擎制作技術和面相對象編程的實踐,進而在此基礎上根據應用的實際情況編寫出更好的更適合當前應用的全文檢索引擎。在這一點上,商業軟件的靈活性遠遠不及Lucene。其次,Lucene秉承了開放源代碼一貫的架構優良的優勢,設計了一個合理而極具擴充能力的面向對象架構,程序員可以在Lucene的基礎上擴充各種功能,比如擴充中文處理能力,從文本擴充到HTML、PDF等等文本格式的處理,編寫這些擴展的功能不僅僅不復雜,而且由于Lucene恰當合理的對系統設備做了程序上的抽象,擴展的功能也能輕易的達到跨平臺的能力。最后,轉移到apache軟件基金會后,借助于apache軟件基金會的網絡平臺,程序員可以方便的和開發者、其它程序員交流,促成資源的共享,甚至直接獲得已經編寫完備的擴充功能。最后,雖然Lucene使用Java語言寫成,但是開放源代碼社區的程序員正在不懈的將之使用各種傳統語言實現(例如.net framework),在遵守Lucene索引文件格式的基礎上,使得Lucene能夠運行在各種各樣的平臺上,系統管理員可以根據當前的平臺適合的語言來合理的選擇。
?? Heritrix是IA的開放源代碼,可擴展的,基于整個Web的,歸檔網絡爬蟲工程
?? Heritrix工程始于2003年初,IA的目的是開發一個特殊的爬蟲,對網上的
?? 資源進行歸檔,建立網絡數字圖書館,在過去的6年里,IA已經建立了400TB的數據。
?? IA期望他們的crawler包含以下幾種:
?? 寬帶爬蟲:能夠以更高的帶寬去站點爬。
?? 主題爬蟲:集中于被選擇的問題。
?? 持續爬蟲:不僅僅爬更當前的網頁還負責爬日后更新的網頁。
?? 實驗爬蟲:對爬蟲技術進行實驗,以決定該爬什么,以及對不同協議的爬蟲爬行結果進行分析的。
Heritrix的主頁是http://crawler.archive.org
?? Heritrix是一個爬蟲框架,可加如入一些可互換的組件。
?? 它的執行是遞歸進行的,主要有以下幾步:
?? 1。在預定的URI中選擇一個。
?? 2。獲取URI
?? 3。分析,歸檔結果
?? 4。選擇已經發現的感興趣的URI。加入預定隊列。
?? 5。標記已經處理過的URI
?? Heritrix主要有三大部件:范圍部件,邊界部件,處理器鏈
?? 范圍部件:主要按照規則決定將哪個URI入隊。
?? 邊界部件:跟蹤哪個預定的URI將被收集,和已經被收集的URI,選擇下一個URI,剔除已經處理過的URI。
?? 處理器鏈:包含若干處理器獲取URI,分析結果,將它們傳回給邊界部件
?? Heritrix的其余部件有:
?? WEB管理控制臺:大多數都是單機的WEB應用,內嵌JAVA HTTP 服務器。
?操作者可以通過選擇Crawler命令來操作控制臺。
?? Crawler命令處理部件:包含足夠的信息創建要爬的URI。
?? Servercache(處理器緩存):存放服務器的持久信息,能夠被爬行部件隨時
查到,包括IP地址,歷史記錄,機器人策略。
?? 處理器鏈:
?????? 預取鏈:主要是做一些準備工作,例如,對處理進行延遲和重新處理,否決隨后的操作。
????????提取鏈:主要是獲得資源,進行DNS轉換,填寫請求和響應表單
????????抽取鏈:當提取完成時,抽取感興趣的HTML,JavaScript,通常那里有新的也適合的URI,此時URI僅僅被發現,不會被評估
????????寫鏈:存儲爬行結果,返回內容和抽取特性,過濾完存儲。
????????提交鏈:做最后的維護,例如,測試那些不在范圍內的,提交給邊界部件
?? Heritrix 1.0.0包含以下關鍵特性:
??????????????1.用單個爬蟲在多個獨立的站點一直不斷的進行遞歸的爬。
??????????????2。從一個提供的種子進行爬,收集站點內的精確URI,和精確主機。
??????????????3。主要是用廣度優先算法進行處理。
??????????????4。主要部件都是高效的可擴展的
??????????????5。良好的配置,包括:
??????????????????a。可設置輸出日志,歸檔文件和臨時文件的位置
??????????????????b。可設置下載的最大字節,最大數量的下載文檔,和最大的下載時間。
??????????????????c。可設置工作線程數量。
??????????????????d。可設置所利用的帶寬的上界。
??????????????????e。可在設置之后一定時間重新選擇。
??????????????????f。包含一些可設置的過濾機制,表達方式,URI路徑深度選擇等等。
??Heritrix的局限:
?????????????? 1。單實例的爬蟲,之間不能進行合作。
?????????????? 2。在有限的機器資源的情況下,卻要復雜的操作。
?????????????? 3。只有官方支持,僅僅在Linux上進行了測試。
?????????????? 4。每個爬蟲是單獨進行工作的,沒有對更新進行修訂。??????????????????????
5
。在硬件和系統失敗時,恢復能力很差。
?6。很少的時間用來優化性能。?
?
??? 根據搜索引擎工作原理,Heritrix從互聯網上抓取網頁,Lucene建立索引數據庫,在索引數據庫中搜索排序.
jwebee
我的個人網站
posted on 2007-05-24 20:09
周行 閱讀(3665)
評論(10) 編輯 收藏 所屬分類:
IT技術