Solr索引乌克兰语文档时触发RuntimeException问题求助
看起来你遇到的问题是Morfologik过滤器的依赖jar包不完整导致的——虽然你已经在solrconfig.xml中引入了lucene-analyzers-morfologik-5.2.1.jar,但这个jar只是Lucene对Morfologik的封装,真正的核心类morfologik.stemming.IStemmer来自Morfologik原生的依赖包,你还需要加载这些包才能让过滤器正常工作。
下面是具体的排查和解决步骤:
1. 检查缺失的依赖jar包
MorfologikFilterFactory需要以下几个核心依赖(版本要和你的Solr 5.2.1严格对应):
morfologik-stemming-*.jarmorfologik-fsa-*.jarmorfologik-polish-*.jar(乌克兰语分词依赖这个基础语言包)
这些jar包通常位于Solr安装目录的contrib/analysis-extras/lib文件夹下,你可以先去这个路径确认是否存在这些文件。
2. 修正solrconfig.xml的lib配置
不要只单独引入lucene-analyzers-morfologik的jar,而是批量引入analysis-extras下的所有相关依赖包,修改你的lib配置为:
<!-- 引入analysis-extras的核心依赖包 --> <lib dir="/opt/solr/contrib/analysis-extras/lib" regex=".*\.jar" /> <!-- 引入lucene相关的morfologik封装包 --> <lib dir="/opt/solr/contrib/analysis-extras/lucene-libs" regex=".*\.jar" />
这样就能确保所有需要的jar都被加载,包括Morfologik原生的核心类。
3. 确认Solr组件完整性
如果你的contrib/analysis-extras目录下缺少这些jar包,说明你的Solr安装可能没有包含analysis-extras组件。你可以:
- 重新下载完整的Solr 5.2.1安装包,替换或补充contrib目录下的analysis-extras文件夹;
- 手动下载对应版本的Morfologik依赖包,放到
contrib/analysis-extras/lib目录下(注意版本必须和Lucene/Solr版本一致,避免兼容性问题)。
4. 重启Solr服务
修改solrconfig.xml后,必须重启Solr服务才能让新的lib配置生效。重启后再尝试添加乌克兰语文档,应该就能解决这个错误了。
另外,你的schema配置和PHP代码看起来都是正确的,问题的核心就是依赖包缺失,按照上面的步骤应该就能搞定~
内容的提问来源于stack exchange,提问作者Yirmiyahu Fischer

