全文檢索基本理論(二)-solr

solr簡介

一、Solr介紹
1. Solr是什麼
  基於Lucene的流行、高性能的開源企業級搜索平臺。Lucene下的子項目。 官網鏈接: https://lucene.apache.org/solr
2. Solr的用途
  獨立地提供全文搜索服務
3. Solr的特性

3.1、獨立的企業級搜索服務,基於http以類-REST API 對外提供服務   你可以通過http協議將文檔以JSON/XML/CSV/binary格式發送給Solr進行索引。你通過http GET請求進行查詢,可返回JSON/XML/CSV/binary格式的搜索結果。
3.2、近實時的索引能力 文檔數據提交索引後,立馬就可看到。
3.3、先進的全文檢索能力 基於Lucene的強大搜索能力,支持任意數據類型的短語、通配、連接、分組等等查詢
3.4、綜合的管理界面   Slor內建了綜合的管理用戶界面,讓你方便的管理你的solr實例
3.5、通過簡單的配置方式來提供高靈活性、適用性
3.6、高伸縮和容錯能力   基於zookeeper,solr支持分佈式、備份、再平衡,來提供高伸縮和容錯能力
3.7、插件體系架構,易擴展   Solr發佈了許多定義良好的擴展點,這使得插件很容易插入索引和查詢時的過程中。

4.優點
主要功能包括全文檢索、命中標示、分面搜索、動態聚類、數據庫集成,以及富文本(如Word、PDF)的處理。Solr是高度可擴展的,並提供了分佈式搜索和索引複製。Solr是最流行的企業級搜索引擎,Solr4 還增加了NoSQL支持。

Solr是用Java編寫、運行在Servlet容器(如 Apache Tomcat 或Jetty)的一個獨立的全文搜索服務器。 Solr採用了 Lucene Java 搜索庫爲核心的全文索引和搜索,並具有類似REST的HTTP/XML和JSON的API。Solr強大的外部配置功能使得無需進行Java編碼,便可對 其進行調整以適應多種類型的應用程序。Solr有一個插件架構,以支持更多的高級定製。

Solr有一個更大、更成熟的用戶、開發和貢獻者社區。

支持添加多種格式的索引,如:HTML、PDF、微軟 Office 系列軟件格式以及 JSON、XML、CSV 等純文本格式。
Solr比較成熟、穩定。
不考慮建索引的同時進行搜索,速度更快。
5.缺點
建立索引時,搜索效率下降,實時索引搜索效率不高。
三、Solr應用架構
在這裏插入圖片描述
要在系統中使用Solr只需完成以下三個步驟即可:
1、在solr中定義一個schema(模式),來告訴solr你要索引的文檔document由哪些Field構成。
2、將需要讓用戶搜索的文檔發送給solr
3、在你的應用中公開搜索功能。應用的搜索功能通過調用Solr的搜索API實現。
四、Solr架構(體系結構)
在這裏插入圖片描述
Solr架構 - 構件塊
以下是Apache Solr的主要構建塊(組件)

  • 請求處理程序 - 發送到Apache Solr的請求由這些請求處理程序處理。請求可以是查詢請求或索引更新請求。根據這些請示的要求來選擇請求處理程序。爲了將請求傳遞給Solr,通常將處理器映射到某個URI端點,並且它將爲指定的請求提供服務。

  • 搜索組件 - 搜索組件是Apache
    Solr中提供的搜索類型(功能)。它可能是拼寫檢查,查詢,構面,命中突出顯示等。這些搜索組件被註冊爲搜索處理程序。多個組件可以註冊到搜索處理程序。

  • 查詢解析器 − Apache
    Solr查詢解析器解析傳遞給Solr的查詢,並驗證查詢的語法是否有錯誤。解析查詢後,將它們轉換爲Lucene理解的格式。 響應寫入器 -
    Apache Solr中的響應寫入器是爲用戶查詢生成格式化輸出的組件。
    Solr支持XML,JSON,CSV等響應格式。對每種類型的響應都有不同的響應寫入。

  • 分析器/分詞器 - Lucene以令牌的形式識別數據。 Apache Solr分析內容,將其分成令牌,並將這些令牌傳遞給Lucene。
    Apache Solr中的分析器檢查字段的文本並生成令牌流。分詞器將分析器準備的令牌流分解成令牌。

  • 更新請求處理器 - 每當向Apache
    Solr發送更新請求時,請求都通過一組稱爲更新請求處理器的插件(簽名,日誌記錄,索引)運行。這個處理器負責修改,例如刪除字段,添加字段等。

五、Solr術語
一般術語
以下是在所有類型的Solr設置中使用的一般術語的列表

  • 實例 -
    就像一個tomcat實例或一個jetty實例,這個術語指的是在JVM中運行的應用程序服務器。Solr主目錄提供對每個這些Solr實例的引用,一個或多個核心可以配置在每個實例中運行。
  • 核心(core) - 在應用程序中運行多個索引時,可以在每個實例中擁有多個核心,而不是每個核心的多個實例。
  • 主目錄(home) - 術語$SOLR_HOME是指主目錄,其中包含有關內核及其索引,配置和依賴關係的所有信息。
  • 碎片(Shard) -
    在分佈式環境中,數據在多個Solr實例之間進行分區,其中每個數據塊可以稱爲碎片(Shard)。它包含整個索引的子集。

SolrCloud術語
Solr可以在獨立模式下進行安裝,同時還可以在分佈式模式(雲環境)中安裝Solr,Solr以主從模式安裝。在分佈式模式下,索引在主服務器上創建,並且將其複製到一個或多個從服務器。

與Solr Cloud相關的主要術語如下 -

  • 節點(Node) - 在Solr雲中,Solr的每個單個實例都被視爲一個節點。
  • 集羣 - Solr雲環境中的所有節點組合在一起構成集羣。
  • 集合 - 集羣具有稱爲集合的邏輯索引。
  • 碎片 - 碎片是集合的一部分,它具有一個或多個索引副本。
  • 副本 - 在Solr Core中,在節點中運行的分片副本稱爲副本。
  • 領導者(Leader) - 它也是碎片的副本,它將Solr Cloud的請求分發給剩餘的副本。
  • Zookeeper - 這是一個Apache項目,Solr Cloud用於集中配置和協調,管理集羣和選擇領導者。

配置文件
Apache Solr中的主要配置文件如下 -

  • Solr.xml - 它是包含Solr Cloud相關信息,此文件是在$SOLR_HOME目錄中。
    爲了加載核心,Solr引用這個文件,這有助於識別它們。
  • Solrconfig.xml − 此文件包含與請求處理和響應格式化相關的定義,核心特定配置,以及索引,配置,管理內存和提交。
  • Schema.xml − 此文件包含整個模式以及字段和字段類型。
  • Core.properties - 此文件包含特定於核心的配置。它被引用爲核心發現,

因爲它包含核心的名稱和數據目錄的路徑。它可以在任何目錄中使用,會將此目錄它視爲核心目錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章