Lucene ломает зависимость от Snowball

В моем Java-проекте (с использованием Maven) у меня есть Gate 8.0 в качестве основы для некоторой обработки естественного языка, и он загружает плагин Stemmer_Snowball (см. Список плагинов). Как указывается в документации, Stemmers обрабатывает обертки ресурсов над стеммерами Snowball ( http://snowball.tartarus.org/).

Gate плюс стеммеры работали хорошо, пока я не добавил в проект Hibernate Search ORM 5.9 (таким образом, Lucene):

mvn test-compile dependency:tree
...
...
[INFO] +- org.hibernate:hibernate-search-orm:jar:5.9.0.Final:compile
[INFO] |  \- org.hibernate:hibernate-search-engine:jar:5.9.0.Final:compile
[INFO] |     +- org.apache.lucene:lucene-core:jar:5.5.5:compile
[INFO] |     +- org.apache.lucene:lucene-misc:jar:5.5.5:compile
[INFO] |     +- org.apache.lucene:lucene-analyzers-common:jar:5.5.5:compile
[INFO] |     +- org.apache.lucene:lucene-facet:jar:5.5.5:compile
[INFO] |     |  \- org.apache.lucene:lucene-queries:jar:5.5.5:compile

Оказывается lucene-analyzers-common пакет переопределяет некоторую старую версию org.tartarus.snowball пакеты (см. сводку пакетов для получения дополнительной информации), и теперь пользовательский пакет Lucene Snowball и оригинальный пакет Snowball несовместимы:

  1. Оригинальная версия Snowball: https://github.com/snowballstem/snowball/tree/master/java/org/tartarus/snowball
  2. Версия Lucene Snowball: https://github.com/apache/lucene-solr/tree/master/lucene/analysis/common/src/java/org/tartarus/snowball

Обратите внимание, что даже если Lucene переопределяет классы пакетов Snowball, он сохраняет исходное имя пакета, что делает библиотеки несовместимыми.

Я хочу использовать в моем проекте как Gate (с оригинальными стеммерами Snowball), так и Hibernate Search (с пользовательскими стеммерами Lucene Snowball). Maven изящно останавливает нас от загрузки нескольких версий одного и того же пакета, что мне делать в этом случае?

Обновление: я добавил проблему в трекер ошибок Lucene.

0 ответов

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