Найдите несколько ячеек SOLR и верните один набор результатов
У нас есть несколько основных настроек в SOLR, и мы хотели бы искать в этих ядрах и возвращать единый результирующий набор.
Немного больше фона:
У нас есть ядро SOLR, которое мы индексируем наш внутренний механизм блога. У нас также есть ядро SOLR, которое мы индексируем нашу систему CMS. Мы хотели бы выполнить поиск в обоих этих ядрах, но просмотреть один набор результатов.
Мне известно о наличии связанных сторон в документе, но мы хотели бы, чтобы ядра были отдельными, для удобства обслуживания и избыточности.
Мы используем SolrSharp в качестве обертки для поиска SOLR.
Любые советы или указания будут оценены.
Ответы
Ответ 1
Так как Solr 1.3, в Solr имеются достойные возможности многоядерного поиска. Прочтите статью Distributed Search, в которой объясняется, как использовать параметр осколков для запроса через несколько ядер и возвращать результаты в виде одного набора данных.
Ответ 2
Невозможно выполнить один запрос через несколько ядер. Распределенный поиск, упомянутый в другом ответе, относится к осколкам, которые разбивают индексы в разных системах.
На самом деле, несколько ядер действительно предназначены для хранения отдельных и разных структур в каждом, и запрос нескольких ядер не должен иметь смысла. Как уже упоминалось в предыдущих комментариях, у вас может быть дополнительное ядро, которое содержит все ваши поля, хотя вам может понадобиться переименовать поля в этом новом ядре, чтобы можно было сохранить одинаковые имена, но по-разному напечатанные поля.
Ответ 3
Ответ Мэтью в точности прав. Осколки и многожильные ядра - яблоки и апельсины. У вас не может быть единого единого запроса для нескольких ядер. Вы должны выполнять индивидуальные запросы на ядро (http://localhost: 8983/solr/core0/select? Q =:, http://localhost: 8983/solr/core1/select? Q =:). Однако с осколками (http://localhost: 8983/solr/select? Shards = localhost: 8983/solr, localhost: 8984/solr & q =:).
Ответ 4
Распределенный поиск - правильный ответ.
Я предлагаю настроить распределенный поиск непосредственно в обработчике.
Вы можете настроить localhost в обработчике, хотя вы можете вызвать solr извне.
Теперь вы можете вызвать обработчик поиска, который будет автоматически искать во всех сконфигурированных ядрах:
http://solrhost:8983/solr/core1?q=:
<requestHandler name="/multicore" class="solr.SearchHandler">
...
<lst name="invariants">
<str name="shards">localhost:8983/solr/core1,localhost:8983/solr/core2</str>
</lst>
</requestHandler>