2017-02-09 9 views
0

Я написал собственный пользовательский запрос SOLR (реализация org.apache.solr.search.QParser). Мой анализатор запросов использует некоторые сторонние банки. Один из сторонних банков требует, чтобы работала собственная библиотека (.so-файл). Этот плагин работает нормально при запуске Solr в режиме без облаков, но когда я запускаю его в режиме облака, SOLR бросает эти ошибки:Как загрузить собственную библиотеку (.so) в режиме Apache SOLR Cloud?

java.lang.UnsatisfiedLinkError: Native Library /opt/solr-6.2.0/lib/xyz.so already loaded in another classloader 

Я сохранил все свои сторонний и синтаксический анализ запросов банки и .so файл в SOLR_HOME каталоге/Lib и модифицировали:

  1. Добавлен Lib DIR = "$ {solr.install.dir: ../../../ ..}/Lib /" в solrconfig.xml

  2. В файле SOLR_HOME/bin/solr:

    SOLR_START_OPTS = "-Djava.library.path = $ SOLR_TIP/Библиотека /"

Пожалуйста, помогите. Заранее спасибо.

ответ

1

Наконец-то я нашел решение для этого (кредит принадлежит моему одному из моих старших). При работе в режиме облака, выполните следующие инструкции:

  1. Создать lib каталог внутри SOLR_HOME и поставить родную-библиотеку (.so) файл там.
  2. В SOLR_HOME/bin/solr файле, добавьте следующую строку в SOLR_START_OPTS:

    SOLR_START_OPTS = "-Djava.library.path = $ SOLR_TIP/Библиотека /"

  3. Создать lib папки в каждой библиотеке узла (т.е. SOLR_HOME/example/cloud/node1/lib, SOLR_HOME/example/cloud/node2/lib) и поместить все ваши настраиваемые плагины в эти недавно созданные папки lib.

  4. Перезапустите solr в режиме облаков.

Надеюсь, это поможет!