ClassCastException: класс org.apache.lucene.analysis.tr.ApostropheFilterFactory с Solr 5.5

Я пытаюсь разработать свой собственный фильтр на основе https://dzone.com/articles/writing-solr-analysis-filter, но с использованием TokenFilterFactory, как указано здесь

Я использую Solr 5.5, и для проекта разработки я добавил в свой pom.xml:

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>5.5.0</version>
    </dependency>

Что касается того, почему я использую версию 5.5 lucene-analyzers-common, причина в том, что я сначала попробовал с solr-core 5.5 и увидел, что нужные мне классы находятся внутри зависимости lucene-analyzers-common версии 5.5.

Мой класс, использующий TokenFilterFactory:

public class MyNameFilterFactory extends TokenFilterFactory {
    Map<String, String> args;

    protected MyNameFilterFactory(Map<String, String> args) {
        super(args);
    }

    public Map<String, String> getArgs() {
        return args;
    }

    public void init(Map<String, String> args) {
        this.args = args;
    }

    public MyNameFilter create(TokenStream input) {
        return new MyNameFilter(input);
    }
}

Я упаковываю проект как толстую банку (иначе я получаю java.lang.ClassNotFoundException: org.apache.lucene.analysis.util.TokenFilterFactory) и помещаю его в папку solr-5.5.0/server/lib.

Но теперь, когда я запускаю Solr, я получаю другую ошибку, которую я не знаю, как решить, потому что мне кажется, что это внутренняя проблема lucene:

Caused by: java.lang.ClassCastException: class org.apache.lucene.analysis.tr.ApostropheFilterFactory
    at java.lang.Class.asSubclass(Class.java:3404)
    at org.apache.lucene.util.SPIClassIterator.next(SPIClassIterator.java:158)
    at org.apache.lucene.analysis.util.AnalysisSPILoader.reload(AnalysisSPILoader.java:85)
    at org.apache.lucene.analysis.util.AnalysisSPILoader.<init>(AnalysisSPILoader.java:65)
    at org.apache.lucene.analysis.util.AnalysisSPILoader.<init>(AnalysisSPILoader.java:51)
    at org.apache.lucene.analysis.util.TokenFilterFactory.<clinit>(TokenFilterFactory.java:31)

Есть идеи, как это исправить? Есть ли лучший подход к разработке собственного фильтра/токенизатора для Solr?


person garci560    schedule 15.07.2016    source источник
comment
Я столкнулся с той же ошибкой с Solr 5.4.1. Вы нашли какое-либо решение для этого? Если да, пожалуйста, помогите мне. Заранее спасибо.   -  person Varun Shringarpure    schedule 06.12.2016
comment
Та же проблема с Solr 5.1.0   -  person mirelon    schedule 25.07.2017