Solr 9.8中非Jar资源如何加载?lib指令已默认禁用
在Solr 9.8及后续版本加载非Jar资源的方案
1. 配置本地文件系统资源加载器
直接在solrconfig.xml中指定FileSystemResourceLoader,自定义非Jar资源的存储路径,不需要将资源打包成Jar或上传至ZooKeeper:
<resourceLoader class="org.apache.solr.core.FileSystemResourceLoader"> <str name="dir">/your/local/model/path</str> </resourceLoader>
配置完成后,Solr配置(比如OpenNLP分词器)中可直接引用该路径下的资源文件。
2. 本地节点同步资源+绝对路径引用
针对分布式部署场景,在所有Solr节点的相同本地路径放置非Jar资源,然后在配置中使用绝对路径直接引用。以OpenNLP模型为例:
<fieldType name="text_opennlp" class="solr.TextField"> <analyzer> <tokenizer class="solr.OpenNLPTokenizerFactory" model="/shared/path/en-token.bin"/> <filter class="solr.OpenNLPPOSFilterFactory" model="/shared/path/en-pos-maxent.bin"/> </analyzer> </fieldType>
这种方式完全规避ZooKeeper的大小限制,资源仅存储在本地节点,无需同步至configsets。
3. 自定义资源加载器(进阶)
如果需要特殊的资源获取逻辑(如从对象存储拉取),可以实现ResourceLoader接口,将自定义逻辑打包成Jar后通过Solr支持的lib目录加载,再在solrconfig.xml中指定该自定义加载器类。
注意:需确保Solr进程对指定的本地资源路径有读写权限;分布式环境下,要保证所有节点的资源版本一致。
内容的提问来源于stack exchange,提问作者Henry H Miao
相关产品推荐
相关产品推荐

