Невозможно скомпилировать пользовательские классы фильтра solr, используя javac

Я пытаюсь создать банку для моего пользовательского фильтра в Solr 4.6. Я получаю ниже ошибку при запуске компиляции:

CustomFilter.java:19: error: package org.apache.lucene.analysis does not exist
import org.apache.lucene.analysis.TokenFilter;
                                 ^
CustomFilter.java:20: error: package org.apache.lucene.analysis does not exist
import org.apache.lucene.analysis.TokenStream;
                                 ^
CustomFilter.java:21: error: package org.apache.lucene.analysis.tokenattributes does not exist
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
                                                 ^
CustomFilter.java:24: error: package org.apache.solr.util does not exist
import org.apache.solr.util.NumberUtils;
                           ^
CustomFilter.java:43: error: cannot find symbol
public final class CustomFilter extends TokenFilter {
                                        ^
  symbol: class TokenFilter
CustomFilter.java:46: error: cannot find symbol
  private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
                ^
  symbol:   class CharTermAttribute
  location: class CustomFilter
CustomFilter.java:47: error: cannot find symbol
  private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);

Мне нужна помощь в добавлении этого пользовательского фильтра в мою схему. Без построения этого jar, я получаю ниже ошибку на моем администраторе Solr, если я пытаюсь использовать фильтр в схеме для поля:

 org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "textCustom": Plugin init failure for [schema.xml] analyzer/filter: Error instantiating class: 'org.apache.solr.analysis.Custom.CustomFilterFactory'. Schema file is /opt/solr5/collection3/schema.xml

На этот вопрос есть повторяющиеся вопросы, но нет правильных ответов. Поэтому, пожалуйста, не закрывайте этот вопрос на этом основании.

1 ответ

Похоже, что вы пытаетесь скомпилировать свой файл класса, не указывая правильные зависимости, убедитесь, что вы указываете classpath на каталог, содержащий ваш плагин, в этом случае: org.apache.lucene.analysis.TokenFilter (также проверьте другие зависимости) то есть: lucene-1.3.jar находится в том же каталоге, где находится файл Java

javac -cp:<directory> <file to compile>

javac -cp:. <file to compile> //period means classpath is same library to compile

Также убедитесь, что ваша пользовательская библиотека токенизатора находится в библиотеке solr. проверьте свой schema.xml на наличие существующих библиотек и добавьте свою пользовательскую библиотеку фильтра Solr в тот же каталог.

Другие вопросы по тегам