我下载了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 过滤器
答案 0 :(得分:1)
我已经发现了问题。
过滤器ICUTransformFilterFactory
的lib文件需要包含在solrconfig.xml
中,使用标记,而不是复制到lib
目录的example
文件夹。
现在它正在运作。
谢谢大家的帮助
答案 1 :(得分:0)
MultiTermAwareComponent
是interface
,需要实施。
在您的过滤器中,显然您已将其实施过滤掉了。 CJKWidthFilterFactory和LowerCaseFilterFactory正在实施interface
。使用此知识来修复过滤器。