Lib 目錄與指令

這裡我們描述兩種簡單有效的方法,使 Solr 外掛程式的 .jar 檔案對 Solr 可見。

這些檔案有時簡稱為「程式庫」或「libs」。基本上,您可以將它們放在一些特殊位置,或從您的設定中明確告知 Solr 這些檔案。

如果程式庫之間存在重疊或相互依賴關係,請注意順序。您可以將其視為一個由上而下搜尋的堆疊。最上層是反向順序的 lib 指令,然後是 Solr 核心的 lib,然後是 Solr home 的 lib,最後是 Solr 本身。

Lib 目錄

您可以將 Solr 外掛程式 .jar 檔案放在幾個特殊位置

  • <solr_home>/lib/:放置在此處的 .jar 檔案可供節點上執行的所有 Solr 核心使用,以及 solr.xml 中參考的節點層級外掛程式使用 — 因此基本上是所有項目。此目錄預設不存在,因此您需要建立它。請參閱將 Solr 投入生產環境

  • <core_instance>/lib/:在使用者管理的集群或單節點安裝中,您可能只想為特定的 Solr 核心新增外掛程式。請在 <core_instance>/conf/ 目錄旁邊建立此目錄;它預設不存在。

  • <solr_install>/lib/:放置在此處的 .jar 檔案可供節點上執行的所有 Solr 核心使用,以及 solr.xml 中參考的節點層級外掛程式使用 — 因此基本上是所有項目。與 <solr_home>/lib/ 不同,此目錄始終位於安裝目錄中,因此例如可用於自訂 Dockerfile 以放置自訂外掛程式 jar。

  • <solr_install>/server/solr-webapp/webapp/WEB-INF/lib/:Solr 本身及其相依性的 .jar 檔案位於此處。某些外掛程式或外掛程式的附加元件需要放置在此處,並且它們會有針對此需求的明確文件說明。

  • <solr_install>/server/lib/ext:用於 Solr 伺服器以及 Solr Core/SolrJ 的 .jar 檔案。

Solr 整合了 Jetty 以提供 HTTP 伺服器功能。Jetty 有一些目錄包含其本身和其自身的插件/模組或 JVM 層級插件(例如,記錄器)的 .jar 檔案。Solr 插件在這些位置將無法運作。

SolrConfig 中的 Lib 指令

插件和資源檔案路徑可以透過 solrconfig.xml 中的 <lib/> 指令進行設定。當指令符合目錄時,可以從該目錄解析資源。當指令符合 .jar 檔案時,Solr 插件及其相依性會從該檔案解析。資源也可以放置在 .jar 中,但這並不常見。引用任何其他類型檔案是錯誤的。

一個 <lib/> 指令必須具有以下兩個屬性之一(不能同時具有):

  • path:用於引用單一目錄(用於資源)或檔案(用於插件 .jar)。

  • dir:用於引用指定目錄的所有直接子目錄。可選擇性地提供 regex 屬性,以將這些過濾為符合該正規表示式的子目錄。

所有目錄都解析為相對於 Solr 核心的 instanceDir 的相對路徑。

以下範例顯示如何將模組載入到 Solr 中。

  <lib dir="${solr.install.dir:../../../..}/modules/extraction/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/modules/clustering/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/modules/langid/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/modules/ltr/lib/" regex=".*\.jar" />