程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 02 Apache Solr: 概覽 Solr在信息系統架構中的位置,apachesolr

02 Apache Solr: 概覽 Solr在信息系統架構中的位置,apachesolr

編輯:JAVA綜合教程

02 Apache Solr: 概覽 Solr在信息系統架構中的位置,apachesolr


概述:

     Apache Solr是一個用JAVA語言構建在Apache Lucene項目上的開源的企業級搜索平台。主要特性包含:全文搜索、命中高亮、片段式搜索、實時索引、動態集群、數據庫集成、NoSQL特性和富文本處理。提供分布式搜索和索引復制,設計時便充分考慮了擴展和容錯能力。Solr目前是第二流行的企業級搜索引擎,第一是ElasticSearch。      Solr作為一個獨立的全文本搜索服務器運行。在內部使用JAVA開發的Lucene完成全文本索引和查詢,提供RESTful API完成對大多數編程語言的支持。靈活的外部配置使得可以不用編寫任何的JAVA代碼就能完成工作,同時還提供了插件式的架構來支持更為高級的用戶定制。      既然這麼強大,那它在我們的整體平台中處於一個什麼樣的位置?

定位:

     下圖來自於官方手冊的一個例子。   上圖中,Solr運行在其他的服務器應用程序之外。拿倉庫平台系統來說,我們要提供一些用戶界面:例如,可以發起入庫的界面,可以查看庫存的界面,可以發起出庫的界面,作為庫管,可能還需要對不正確的物資信息進行調整。無論入庫、出庫、查看庫存等哪個功能,都是圍繞著物資展開的。這些信息會同時存在於平台系統的數據庫中和Solr系統中,只不過可能會因為存放在不同系統中所要達到的目的和用處不一樣,信息的格式和完整度也會有(或沒有)差異。      因為有了Solr,我們在倉儲平台中提升搜索體驗也變得更加容易。只需通過如下步驟:      1、定義Schema。Schema告知Solr將要建立索引的文件內容。以倉儲平台為例,Schema中可能需要為物資名稱、編碼、庫存量、生產廠商等定義字段。Solr的Schema強大而有彈性,並且允許你為你的應用系統定義特有的Solr行為。      2、發布Solr。      3、為用戶將要檢索進行的檢索提供Solr文件。      4、在應用程序裡實現檢索功能。      Solr建立在開發標准之上,因此具有很高的可擴展性。Solr的查詢基於RESTful,也就是說,一個查詢的本質就是一個簡單的HTTP請求URL和一個結構化的響應文檔。響應文檔的結構主要包含:XML、JSON、CSV,還有其他格式 。這也意味著,大量的客戶應用程序可以使用Solr,比如WEB應用、富客戶端應用和移動設備。任何支持HTTP協議的平台都能和Solr進行交互。      Solr基於Apache Lucene項目,一個高性能、全特性的搜索引擎。Solr支持簡單的關鍵字查詢,復雜的多字段查詢,以及將結果分片段。  

擴展性:

     如果單個Solr的能力不夠可觀,那麼它處理非常大量應用程序的能力將能達到理想效果。      比較常見的場景是:你有大量的數據或者很多的查詢,一個單一的Solr服務器無法處理所有的工作負荷。在這種情況下,可以使用SolrCloud來擴展Solr的能力,使得其在多台服務器間能獲得更好的分發數據、處理請求的能力。基於你需要獲得的擴展能力,大量不同的配置選項需要組合使用。      例如:分片就是一種擴展方式,它把一個大的集合劃分成多個稱為"分片"的邏輯塊,從而提高一個集合中的文檔數量使超過一個單一Solr服務器所允許的物理限度。進入系統的查詢會被分發到集合裡的每一個分片,然後返回合並的結果。另一種可用的技術是提升集合的“復制因子”,它允許你使用集合的副本添加額外的服務器,通過在多台機器之間傳播高並發的查詢命令來完成工作。分片和復制並非互不相容的,組合使用能使Solr變成一個更加強大和可擴展的平台。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved