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

来源:http://www.cnblogs.com/chen108/archive/2016/12/17/6189515.html
-Advertisement-
Play Games

概述: Apache Solr是一個用JAVA語言構建在Apache Lucene項目上的開源的企業級搜索平臺。主要特性包含:全文搜索、命中高亮、片段式搜索、實時索引、動態集群、資料庫集成、NoSQL特性和富文本處理。提供分散式搜索和索引複製,設計時便充分考慮了擴展和容錯能力。Solr目前是第二流行 ...


概述:

     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變成一個更加強大和可擴展的平臺。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在寫代碼時發現php foreach引用賦值會導致意外的行為。 代碼示例: <?php $arr = array('a','b','c'); foreach($arr as $k=>&$v) { } print_r($arr); foreach($arr as $k=>$v) { } print_r ...
  • chain 總結:lodash是一個能夠幫助我們更方便的對數組進行各種操作的javascript工具庫 文檔:http://lodashjs.com/docs/#_findindexarray-predicate_identity-thisarg ...
  • ...
  • <mvc:annotation-driven/> 這個便簽會註冊2個自定義攔截器,所以導致請求過來就會自己去走註冊的這2個攔截器和定義的一堆bean 但是這個便簽是必須得定義的 直接貼代碼吧 通過自定義攔截器來過濾掉靜態資源 這個問題困擾了我2天,整整熬了2天,翻遍了博客員和百度,各種瞎扯淡,也反思 ...
  • MyGraphicsView.h MyGraphicsView.cpp 三種繪製方法效果圖: ...
  • 一、model 到目前為止,當我們的程式涉及到資料庫相關操作時,我們一般都會這麼搞: 創建資料庫,設計表結構和欄位 使用 MySQLdb 來連接資料庫,並編寫數據訪問層代碼 業務邏輯層去調用數據訪問層執行資料庫操作 django為使用一種新的方式,即:關係對象映射(Object Relational ...
  • 一、前言 發下牢騷,這段時間要做項目,又要學框架,搞得都沒時間寫筆記,但是覺得這知識學過還是要記錄下。進入主題了 1.1、Hibernate簡介 什麼是Hibernate?Hibernate有什麼用? Hibernate是開放源代碼的對象關係映射框架,用來把java的對象映射到資料庫中的關係數據中, ...
  • JVM是按照運行時數據的存儲結構來劃分記憶體結構的。JVM在運行Java程式時,將他們劃分成不同格式的數據,分別存儲在不同的區域,這些數據就是運行時數據。運行時數據區域包括堆,方法區,運行時常量池,程式計數器,虛擬機棧,本地方法棧。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...