Lucene和Solr 學習目錄
幾個概念先行說明一下:
Lucene: 是一個索引與搜尋類庫,而不是完整的程式。
Solr:是一個高效能,採用Java5開發,基於Lucene的一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。
Nutch:是一個由Java實現的,剛剛誕生開放原始碼(open-source)的web搜尋引擎。
: 實現了一個分散式檔案系統(hadoop Distributed
File System),簡稱HDFS。
於 2005 年秋天作為 Lucene的子專案 Nutch的一部分正式引入。
它受到最先由 Google Lab 開發的 Map/Reduce 和 Google File System(GFS) 的啟發。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的專案中。
1. Lucene
1.1. Lucene是什麼
Lucene是apache軟體基金會4 jakarta專案組的一個子專案,是一個開放原始碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文字分析引擎(英文與德文兩種西方語言)。
Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
Lucene: 是一個索引與搜尋類庫,而不是完整的程式。
使用Lucene的方式主要有二種:一是自己編寫程式,呼叫類庫;二是使用第三方基於Lucene編寫的程式,如下面介紹的Solr等。
1.2. 資源下載
12_Lucene+nutch搜尋引擎開發.pdf (Part1 Part2)
13_開發自己的搜尋引擎——Lucene+Heritrix(第2版) (Part1 Part2)
1.3. Lucene學習
1.4. Lucene索引檢視工具Luke
2. Solr
2.1. Solr是什麼
Apache Solr 是一個開源的搜尋伺服器,Solr 使用 Java 語言開發,主要基於 HTTP 和 Apache Lucene 實現。定製 Solr 索引的實現方法很簡單,用 POST 方法向 Solr 伺服器傳送一個描述所有 Field 及其內容的 XML 文件就可以了。定製搜尋的時候只需要傳送 HTTP GET 請求即可,然後對 Solr 返回的資訊進行重新佈局,以產生利於使用者理解的頁面內容佈局。
Solr原理圖
Solr使用者
2.2. 資源下載
21_Lucene_Solr_搜尋引擎解密.ppt
22_開源企業搜尋引擎Solr的應用教程.doc (快速上手特別推薦,請點選這裡下載)
23_Solr技術文件.pdf
24_solr3.1 cookbook.pdf
25_Apache+Solr+3+Enterprise+Search+Server.pdf
26_apache-solr-beyond-the-box.pdf
27_Packtpub.Solr.1.4.Enterprise.Search.Server.Aug.2009.pdf
上述文件打包下載: 請點選這裡
2.3. Solr原理
2.3.1. Solr服務原理
Solr對外提供標準的http介面來實現對資料的索引的增加、刪除、修改、查詢。
在Solr中,使用者通過向部署在servlet 容器中的Solr Web應用程式傳送 HTTP 請求來啟動索引和搜尋。
Solr接受請求,確定要使用的適當SolrRequestHandler,然後處理請求。通過 HTTP 以同樣的方式返回響應。
預設配置返回Solr的標準 XML 響應,也可以配置Solr的備用響應格式。
2.3.2. 索引原理
可以向Solr索引servlet傳遞四個不同的索引請求:
1) add/update允許向Solr新增文件或更新文件。直到提交後才能搜尋到這些新增和更新。
2) commit 告訴Solr,應該使上次提交以來所做的所有更改都可以搜尋到。
3) optimize 重構 Lucene 的檔案以改進搜尋效能。索引完成後執行一下優化通常比較好。如果更新比較頻繁,則應該在使用率較低的時候安排優化。一個索引無需優化也可以正常地執行。優化是一個耗時較多的過程。
4) delete 可以通過 id 或查詢來指定。按 id 刪除將刪除具有指定 id 的文件;按查詢刪除將刪除查詢返回的所有文件。
2.3.3. 搜尋原理
2.4. Solr原始碼結構
請檢視另一篇《Solr原始碼結構》,主要內容如下: