1. 程式人生 > >lucene、solr區別

lucene、solr區別

Lucene是一個開放原始碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文字分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎.

Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。它對外提供類似於Web-service的API介面。使用者可以通過
http請求
,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Solr Get操作提出查詢請求,並得到XML格式的返回結果;
Solr和Lucene的本質區別有以下三點:搜尋伺服器,企業級和管理。Lucene本質上是搜尋庫,不是獨立的應用程式,而Solr是。Lucene專注於搜尋底層的建設,而Solr專注於企業應用。Lucene不負責支撐搜尋服務所必須的管理,而Solr負責。所以說,一句話概括Solr: Solr是Lucene面向企業搜尋應用的擴充套件

幾個概念先行說明一下: 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原始碼結構》,主要內容如下:

2.4.1. 目錄結構說明

  點此檢視

2.4.2. Solr home說明

  點此檢視

2.4.3. Solr的包說明

  點此檢視

2.5. Solr安裝配置 

2.5.1. Linux下的安裝與配置Solr

  點此檢視

2.5.2. Windows下安裝與配置Solr(tomcat7.0)

  點此檢視

2.5.3. 多核配置

  點此檢視

2.5.4. Solr配置檔案說明

  點此檢視

2.5.5. Solr配置檔案schema.xml和solrconfig.xml分析

  點此檢視

2.5.6. Solr中文分詞配置(IKAnalyzer)

  點此檢視

2.5.7. 在Jetty容器執行Solr----標準執行方式

  點此檢視

2.5.8. 匯入Solr預設的示例資料

  點此檢視

2.5.9. 為多核Solr例項新增一個支援預設示例資料的核

  點此檢視 

2.6. Solr管理與維護

2.6.1. Solr的admin頁面說明

  點此檢視

2.6.2. Solr搜尋結果說明

  點此檢視

2.6.1. Solr基礎理論與維護管理快速上手(含查詢引數說明):(非常重要)

  點此檢視

2.7.  Solr的Facet

2.8.  Solr的客戶端

2.8.1. SolrJ

2.8.2. SolrNet 

2.9. Solr4.0

參考: