Lib 目录和指令
在此,我们介绍两种简单有效的方法,让 Solr 可以看到 Solr 插件的 .jar
文件。
此类文件有时简称为“库”或“库”。从本质上讲,你可以将它们放在一些特殊位置,或从你的配置中明确告知 Solr。
如果库之间存在重叠或相互依赖,则需要注意顺序。你可以将其视为自上而下搜索的堆栈。在顶部是按相反顺序排列的 lib 指令,然后是 Solr 核心库,然后是 Solr 主目录库,最后是 Solr 本身。
库目录
你可以将 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" />