Posted on 2011-11-19 11:54
陳小東 閱讀(174)
評論(0) 編輯 收藏
Lucene是一個全文搜索框架,而不是應用產品,它可以方便的嵌入到各種應用中實現針對應用的全文索引/檢索功能。因此它并不像www.baidu.com 或者google Desktop那么拿來就能用,它只是提供了一種工具讓你能實現這些產品。
Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
作為一個開放源代碼項目,Lucene從問世之后,引發了開放源代碼社群的巨大反響,程序員們不僅使用它構建具體的全文檢索應用,而且將之集成到各種系統軟件中去,以及構建Web應用,甚至某些商業軟件也采用了Lucene作為其內部全文檢索子系統的核心。
已經有很多Java項目都使用了Lucene作為其后臺的全文索引引擎,比較著名的有:Jive:WEB論壇系統;Eyebrows:郵件列表HTML歸檔/瀏覽/查詢系;Cocoon:基于XML的web發布框架,全文檢索部分使用了Lucene;apache軟件基金會的網站使用了Lucene作為全文檢索的引擎;IBM的開源軟件eclipse的2.1版本中也采用了Lucene作為幫助子系統的全文索引引擎;IBM的商業軟件Web Sphere中也采用了Lucene。
Lucene以其開放源代碼的特性、優異的索引結構、良好的系統架構獲得了越來越多的應用。Lucene是一個高性能、可伸縮的信息搜索(IR)庫。它使你可以為你的應用程序添加索引和搜索能力。Lucene是用java實現的成熟的、免費的開源項目,是著名的Apache Jakarta大家庭的一員,并且基于在Apache軟件許可 [ASF, License]。同樣,Lucene是當前與近幾年內非常流行的免費的Java信息搜索(IR)庫。
lucene提供的服務實際包含兩部分:一入一出。所謂入是寫入,即將你提供的源(本質是字符串)寫入索引或者將其從索引中刪除;所謂出是讀出,即向用戶提供全文搜索服務,讓用戶可以通過關鍵詞定位源。
寫入流程:源字符串首先經過analyzer處理,包括:分詞,分成一個個單詞;去除stopword(可選)。將源中需要的信息加入Document的各個Field中,并把需要索引的Field索引起來,把需要存儲的Field存儲起來。 將索引寫入存儲器,存儲器可以是內存或磁盤。
讀出流程:用戶提供搜索關鍵詞,經過analyzer處理。對處理后的關鍵詞搜索索引找出對應的Document。用戶根據需要從找到的Document中提取需要的Field。
索引過程:從命令行讀取文件名(多個),將文件分路徑(path字段)和內容(body字段)2個字段進行存儲,并對內容進行全文索引:索引的單位是Document對象,每個Document對象包含多個字段Field對象,針對不同的字段屬性和數據輸出的需求,對字段還可以選擇不同的索引/存儲字段規則。