Solr 从 4.10 升级到 5.3.3,插件初始化失败 solr.ICUcollationField

Solr upgrade from 4.10 to 5.3.3, plugin init failure solr.ICUcollationField

我目前正致力于将多个 solr 核心 (3) 从版本 4.10 升级到 5.3.3(然后升级到 6.2)。我全新安装了 solr 5.3.3,然后将我的核心添加到新安装中。

我们还使用库 icu4j 、 lucene-analyzers-icu 、 solr-analysis-extras ,所以我为 5.3.3 版本加载了它们。其中一个核心工作正常,因为它没有定义任何自定义字段类型。但是,对于其他两个内核,我收到以下错误,最初我收到错误

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core product: Can't load schema /var/solr/data/cores/product/conf/schema.xml: Plugin init failure for [schema.xml] fieldType "text_sortable": Error loading class 'solr.ICUCollationField'

所以,我从 schema.xml 中删除了以下行,上面的错误消失了,

<fieldType name="text_sortable" class="solr.ICUCollationField" locale="" strength="primary"/>

但现在我收到以下错误,

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: JVM Error creating core [suggest]: An SPI class of type org.apache.lucene.analysis.util.CharFilterFactory with classname org.apache.lucene.analysis.icu.ICUNormalizer2CharFilterFactory does not exist, please fix the file 'META-INF/services/org.apache.lucene.analysis.util.CharFilterFactory' in your classpath.

我不确定如何从这里开始,任何关于如何修复上述错误的建议都会有所帮助

对于将来遇到此问题的任何人:ICU 字段需要加载 icu4j 库。您可以检查 Solr 日志以了解 Solr 在启动时实际加载了哪些库。

根据您的日志,您在类加载器中加载了一组错误的 jar。 ICU 的正确 jar 是没有任何额外命名的,例如 sources 等。当前版本被命名为 icu4j-54_1_1.jar.