应用日语filedType时ClassNotFoundException

时间:2014-04-01 09:23:26

标签: java solr

我下载了Solr版本4.7.0,然后像这样添加日文文件类型的过滤器(使用包中的示例目录):

<fieldType name="text_ja_start_with" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
    <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" />
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" />
    <filter class="solr.CJKWidthFilterFactory"/>
    <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
    <filter class="solr.JapaneseReadingFormFilterFactory" useRomaji="false"/>
    <filter class="solr.ICUTransformFilterFactory" id="Katakana-Hiragana"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
    <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" />
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" />
    <filter class="solr.CJKWidthFilterFactory"/>
    <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
    <filter class="solr.JapaneseReadingFormFilterFactory" useRomaji="false"/>
    <filter class="solr.ICUTransformFilterFactory" id="Katakana-Hiragana"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

由于此错误,服务器无法启动:

  

引起:java.lang.ClassNotFoundException:org.apache.lucene.analysis.util.MultiTermAwareComponent

我做了一些搜索,但据说MultiTermAwareComponent是Solr(http://lucene.apache.org/core/4_0_0/analyzers-common/org/apache/lucene/analysis/util/MultiTermAwareComponent.html)的抽象组件。 所以我不知道如何解决这个问题。

更新

当我复制2个libs文件时,我发现原因造成了这个错误( $ root / contrib / analysis-extras / lucene-libs / lucene-analyzers-icu-4.7.0.jar $ root / contrib / analysis-extras / lib / icu4j-52.1.jar ICUTransformFilterFactory 过滤到$ root / example / lib / ext,它会抛出错误如果没有将2个文件添加到libs目录,则不会发生错误但不能使用 ICUTransformFilterFactory 过滤器

2 个答案:

答案 0 :(得分:1)

我已经发现了问题。

过滤器ICUTransformFilterFactory的lib文件需要包含在solrconfig.xml中,使用标记,而不是复制到lib目录的example文件夹。

现在它正在运作。

谢谢大家的帮助

答案 1 :(得分:0)

MultiTermAwareComponentinterface,需要实施。

在您的过滤器中,显然您已将其实施过滤掉了。 CJKWidthFilterFactoryLowerCaseFilterFactory正在实施interface。使用此知识来修复过滤器。