2014-01-08 4 views
3

Я хотел знать, что является целью общей библиотеки в solr? В частности, имея дело с несколькими ядрами ... есть ли способ, который я могу поместить весь обычный xml из нескольких ядер в один файл конфигурации, а затем перезаписать необходимые теги в конкретных ядрах?Что такое общая библиотека (sharedLib) в apache solr?

Спасибо.

ответ

0

Вы знаете, мой опыт работы с «Как разделить lib между ядрами при использовании solr» может хорошо объяснить «цель общей библиотеки в solr». Ниже то, что я разделяю на Codeproject в прошлом году (https://www.codeproject.com/Tips/1140498/How-to-Share-Lib-Between-Cores-When-Using-solr), надежда может помочь:

Введение

При использовании Solr, вы можете поделиться LIB между сердечниками, Solr ядра могут загружать различные LIBS (сконфигурированный с solrconfig .xml) с различными загрузчиками классов. Проблема в том, что они не разделяют переменные класса друг с другом, тогда вам приходится тратить больше места и тратить больше времени, чтобы распределенные программы хорошо работали друг с другом, например. Словарные словари.

шаги, чтобы решить эту проблему

  1. Это занимает много времени, чтобы найти ответы с помощью поиска Google, так как мои ключевые слова не могут означать точки. «Solr classloader different core» - это мои ключевые слова, foucus на «classloader». Если я перейду на «долю между ядрами», я могу найти ответ раньше.

  2. Сомневаюсь, что я, возможно, допустил некоторые ошибки при настройке solr, но нет. Поэтому я проверил код solr souce в отчаянии и нашел, что solr load libs для ядер с разным загрузчиком классов действительно.

  3. Несчастный случай Я нашел несколько статей в https://issues.apache.org/jira/browse/SOLR-409, они не решают мою проблему, но найдите ключевые слова из темы «Разрешить конфигурируемый загрузчик классов между ядрами». Сначала я должен искать свой ответ с issues.apache.org.

  4. После поиска Google по новым ключевым словам, я нашел решение, из результатов:

4.1) найти место внутри Solr, до того, как ядро ​​создается (если вы хотите одиночек вы должны загрузить они за пределами ядра, используя родительский загрузчик классов - в случае причала это означает, что вы создаете собственную инициализацию или конфигурацию вашего причала , чтобы заставить загрузчики разделяемого класса или найти место внутри solr, прежде чем ядро ​​будет создано. montysolr, чтобы увидеть пример первого подхода)

4.2) XML-файл solr config теперь может указывать элемент libDir (так же, как может быть указан dataDir). Этот элемент также может указывать через «общий» атрибут, является ли библиотека общей. По умолчанию общий атрибут имеет значение true; если вы укажете libDir, его загрузчик классов станет доступным.

Синтаксис:

<libDir shared='true*|false'>/path/to/shareable/dir</libDir> 

(от grokbase.com/t/lucene/solr-dev/07bc9zs7bt/jira-created-solr-409-allow-configurable-class-loader-sharing-between-cores)

Я понимаю, что solr может обеспечить возможность расширения, чтобы удовлетворить мою потребность, он должен и я верю.

  1. Обращайтесь к официальной документации apache solr для решения. Когда я просматриваю «apache-solr-ref-guide-5.5.pdf» с «shared», появляется ответ «Для многоядерной конфигурации вы можете указать sharedLib = 'lib» в разделе <solr/> файла solr.xml и разместите там необходимые файлы jar ».

«shared => sharedLib => Multi-Core», на самом деле я искал многоядерность в формате pdf раньше, но не «многоядерные», что может привести к правильному ответу. «multicore vs multi-core», они разные!

Трудный курс может быть одной из причин, по которым я пишу свой опыт на английском языке здесь.

Решение

  1. Укажите SharedLib = 'Lib' (SOLR_HOME по умолчанию/LIB, или ваш указанный относительный путь) в <solr/> секции solr.xml

  2. Изменить Вы выкладываете сценарий и БП необходимые файлы jar (возможно, помещены под папку «global» или где-то еще).

Смежные вопросы