概述: Apache Solr是一個用JAVA語言構建在Apache Lucene項目上的開源的企業級搜索平臺。主要特性包含:全文搜索、命中高亮、片段式搜索、實時索引、動態集群、資料庫集成、NoSQL特性和富文本處理。提供分散式搜索和索引複製,設計時便充分考慮了擴展和容錯能力。Solr目前是第二流行 ...
概述:
Apache Solr是一個用JAVA語言構建在Apache Lucene項目上的開源的企業級搜索平臺。主要特性包含:全文搜索、命中高亮、片段式搜索、實時索引、動態集群、資料庫集成、NoSQL特性和富文本處理。提供分散式搜索和索引複製,設計時便充分考慮了擴展和容錯能力。Solr目前是第二流行的企業級搜索引擎,第一是ElasticSearch。 Solr作為一個獨立的全文本搜索伺服器運行。在內部使用JAVA開發的Lucene完成全文本索引和查詢,提供RESTful API完成對大多數編程語言的支持。靈活的外部配置使得可以不用編寫任何的JAVA代碼就能完成工作,同時還提供了插件式的架構來支持更為高級的用戶定製。 既然這麼強大,那它在我們的整體平臺中處於一個什麼樣的位置?定位:
下圖來自於官方手冊的一個例子。
擴展性:
如果單個Solr的能力不夠可觀,那麼它處理非常大量應用程式的能力將能達到理想效果。 比較常見的場景是:你有大量的數據或者很多的查詢,一個單一的Solr伺服器無法處理所有的工作負荷。在這種情況下,可以使用SolrCloud來擴展Solr的能力,使得其在多台伺服器間能獲得更好的分發數據、處理請求的能力。基於你需要獲得的擴展能力,大量不同的配置選項需要組合使用。 例如:分片就是一種擴展方式,它把一個大的集合劃分成多個稱為"分片"的邏輯塊,從而提高一個集合中的文檔數量使超過一個單一Solr伺服器所允許的物理限度。進入系統的查詢會被分發到集合里的每一個分片,然後返回合併的結果。另一種可用的技術是提升集合的“複製因數”,它允許你使用集合的副本添加額外的伺服器,通過在多台機器之間傳播高併發的查詢命令來完成工作。分片和複製並非互不相容的,組合使用能使Solr變成一個更加強大和可擴展的平臺。