我正在尝试设置多核solr安装,但似乎无法使solr配置正确以加载所需的类。
正在运行java -jar start.jar
的输出包括:
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrResourceLoader replaceClassLoader
INFO: Adding 'file:/software/solr/solr/contrib/analysis-extras/lib/icu4j-4.8.1.1.jar' to classloader
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrResourceLoader replaceClassLoader
INFO: Adding 'file:/software/solr/solr/contrib/analysis-extras/lucene-libs/lucene-icu-3.6.1.jar' to classloader
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrResourceLoader replaceClassLoader
INFO: Adding 'file:/software/solr/solr/contrib/analysis-extras/lucene-libs/lucene-smartcn-3.6.1.jar' to classloader
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrResourceLoader replaceClassLoader
INFO: Adding 'file:/software/solr/solr/contrib/analysis-extras/lucene-libs/lucene-stempel-3.6.1.jar' to classloader
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrConfig <init>
WARNING: <indexDefaults> and <mainIndex> configuration sections are deprecated (but still work). Please use <indexConfig> instead.
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrConfig <init>
INFO: Using Lucene MatchVersion: LUCENE_36
Sep 11, 2012 4:23:16 PM org.apache.solr.core.SolrConfig <init>
INFO: Loaded SolrConfig: solrconfig.xml
Sep 11, 2012 4:23:16 PM org.apache.solr.schema.IndexSchema readSchema
INFO: Reading Solr Schema
... snip ...
Sep 11, 2012 4:23:16 PM org.apache.solr.common.SolrException log
SEVERE: java.lang.NoClassDefFoundError: org/apache/lucene/analysis/icu/ICUFoldingFilter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:388)
at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:409)
at org.apache.solr.util.plugin.AbstractPluginLoader.create(AbstractPluginLoader.java:83)
org/apache/lucene/analysis/icu/ICUFoldingFactory
中存在 lucene-icu-3.6.1.jar
,为什么以后才能找到它?
我的目录结构是:
|-solr
|---contrib
|-----analysis-extras
|-------lib
|-------lucene-libs
|-----velocity
|-------lib
|---cores
|-----core0
|-------conf
|-------data
|---------index
|-----core1
|-------conf
|-------data
|-----core2
|-------conf
|-------data
|---------index
|---lib
|-----solrj-lib
|-------optional
答案 0 :(得分:4)
我发现我需要在每个实例目录的lib中放置以下jar:
Apache的solr的分析-额外-3.6.2.jar
Lucene的-ICU-3.6.2.jar
Lucene的-斯坦普尔-3.6.2.jar
ICU4J,4.8.1.1.jar
Lucene的-smartcn-3.6.2.jar
normalizer.jar
UnicodeNormalizeFilter.jar
我的主要问题是我没有意识到我需要apache-solr-analysis-extras-x.y.x.jar。该文件位于apache-solr-3.6.2 / dist中。接下来的4个来自apache-solr-3.6.2 / contrib / analysis-extras。 (我认为不需要normalizer.jar和UnicodeNormalizerFilter.jar。)
然后在schema.xml中我需要使用:
<filter class="solr.ICUFoldingFilterFactory"/>
...不是org.apache.lucene.etc包名。我尝试了org.apache.lucene.analysis包名,但它没有用。我发现这有点奇怪,但它在文档中看起来如何。 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ICUTokenizerFactory
答案 1 :(得分:0)
另一种可能不那么费力的方法是在-Dsolr.solr.home的任何目录下创建一个lib目录(在你的情况下,我猜,那将是“核心”)。我正在使用示例安装,并在多核下创建了lib并将分析罐复制到那里。当我用java -Dsolr.solr.home=multicore -jar start.jar
我在日志中看到以下内容,我定义的核心启动没有问题:
2471 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/icu4j-49.1.jar' to classloader
2471 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/lucene-analyzers-icu-4.6.1.jar' to classloader
2472 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/lucene-analyzers-morfologik-4.6.1.jar' to classloader
2472 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/lucene-analyzers-smartcn-4.6.1.jar' to classloader
2473 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/lucene-analyzers-stempel-4.6.1.jar' to classloader
2474 [main] INFO org.apache.solr.core.SolrResourceLoader Adding 'file:/C:/Solr/solr-4.6.1/example/multicore/lib/solr-analysis-extras-4.6.1.jar' to classloader