我读过很多相同的问题,但仍然无法得到答案。
我得到了
java.lang.NoSuchMethodException: SolrCustomFilters.SolrCustomAlarmFilterFactory.<init>(java.util.Map)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:582)
加载Solr时
我的过滤器工厂:
package SolrCustomFilters;
import java.util.Map;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.util.TokenFilterFactory;
public class SolrCustomAlarmFilterFactory extends TokenFilterFactory {
public void init(java.util.Map<String, String> args) {
}
protected SolrCustomAlarmFilterFactory(java.util.Map<String, String> args) {
super(args);
}
@Override
public SolrCustomAlarmFilter create(TokenStream ts) {
return new SolrCustomAlarmFilter(ts);
}
}
架构配置:
<analyzer type="index">
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="SolrCustomFilters.SolrCustomAlarmFilterFactory" />
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
有什么建议吗?
P.S。过滤器中使用的罐子与Solr中的罐子相同(只需复制)。
思考困难...... 使构造函数公开并且有效。
答案 0 :(得分:0)
SolrCustomAlarmFilterFactory.<init>
是构造函数,而不是init
方法。构造函数应为public
。