1.什麼是Solr?
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。
2.Solr特點
Solr是一個高性能,採用Java開發,Solr基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。
3.Solr的工作方式
文檔通過Http利用XML 加到一個搜索集合中。Solr查詢該集合也是通過http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引複製來提高可用性,提供一套強大Data Schema來定義字段,類型和設置文本分析,提供基於Web的管理界面等。
4.什麼是Lucene?
Lucene是apache軟件基金會 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。
Lucene的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎建立起完整的全文檢索引擎。
5.Solr和Lucene的關係
Solr是一個高性能,採用Java開發,基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。
Solr和Lucene的本質區別有以下三點:搜索服務器,企業級和管理。Lucene本質上是搜索庫,不是獨立的應用程序,而Solr是。Lucene專注於搜索底層的建設,而Solr專注於企業應用。Lucene不負責支撐搜索服務所必須的管理,而Solr負責。所以說,一句話概括Solr: Solr是Lucene面向企業搜索應用的擴展。
6.Solr服務原理
Solr對外提供標準的http接口來實現對數據的索引的增加、刪除、修改、查詢。
在Solr中,用戶通過向部署在servlet 容器中的Solr Web應用程序發送 HTTP 請求來啓動索引和搜索。
Solr接受請求,確定要使用的適當SolrRequestHandler,然後處理請求。通過 HTTP 以同樣的方式返回響應。默認配置返回Solr的標準 XML 響應,也可以配置Solr的備用響應格式。
7.Solr原理圖
可以向Solr索引servlet傳遞四個不同的索引請求:
-
add/update允許向Solr添加文檔或更新文檔。直到提交後才能搜索到這些添加和更新。
-
commit 告訴Solr,應該使上次提交以來所做的所有更改都可以搜索到。
-
optimize 重構 Lucene 的文件以改進搜索性能。索引完成後執行一下優化通常比較好。如果更新比較頻繁,則應該在使用率較低的時候安排優化。一個索引無需優化也可以正常地運行。優化是一個耗時較多的過程。
-
delete 可以通過 id 或查詢來指定。按 id 刪除將刪除具有指定 id 的文檔;按查詢刪除將刪除查詢返回的所有文檔。
8.認識下Solr的管理界面
9.Solr Core
Solr裏面的core就像數據庫裏面的一個表,用來管理索引和相關配置。
core.properties
#Written by CorePropertiesLocator
#Sat Mar 15 15:49:01 CST 2014
name=core0
config=solrconfig.xml
schema=schema.xml
dataDir=data