<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>Linux/uClinux/Unix編程>

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

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

用戶級別:注冊會員

貢獻文章:

貢獻資料:

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

非常好我支持^.^

(1) 100%

不好我反對

(0) 0%

      發表評論

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

      發表評論,獲取積分! 請遵守相關規定!

      ?
      亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
      <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
      <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
      <acronym id="s8ci2"></acronym>
      <acronym id="s8ci2"><center id="s8ci2"></center></acronym>