Подтвердить что ты не робот

Найдите несколько ячеек SOLR и верните один набор результатов

У нас есть несколько основных настроек в SOLR, и мы хотели бы искать в этих ядрах и возвращать единый результирующий набор.

Немного больше фона: У нас есть ядро ​​SOLR, которое мы индексируем наш внутренний механизм блога. У нас также есть ядро ​​SOLR, которое мы индексируем нашу систему CMS. Мы хотели бы выполнить поиск в обоих этих ядрах, но просмотреть один набор результатов.

Мне известно о наличии связанных сторон в документе, но мы хотели бы, чтобы ядра были отдельными, для удобства обслуживания и избыточности.

Мы используем SolrSharp в качестве обертки для поиска SOLR. Любые советы или указания будут оценены.

4b9b3361

Ответ 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>