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" />