Поиск нескольких ядер SOLR и возврат одного набора результатов - PullRequest
28 голосов
/ 26 января 2010

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

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

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

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

Ответы [ 4 ]

21 голосов
/ 26 января 2010

Начиная с Solr 1.3, в Solr появились приличные возможности многоядерного поиска. Прочтите статью Distributed Search , в которой объясняется, как использовать параметр shards для запросов по нескольким ядрам и возврата результатов в виде одного набора данных.

19 голосов
/ 02 февраля 2011

Невозможно выполнить один запрос для нескольких ядер. Distributed Search , упомянутый в другом ответе, связан с шардами, которые разделяют индексы по системам.

На самом деле, несколько ядер действительно предназначены для хранения отдельных и разных структур в каждом, и запросы к нескольким ядрам не должны иметь смысла. Как уже упоминалось в предыдущих комментариях, у вас может быть дополнительное ядро, которое содержит все ваши поля - хотя вам, возможно, придется переименовать поля в этом новом ядре, чтобы можно было хранить как одинаковые, так и разные типы полей.

3 голосов
/ 23 января 2013

Ответ Мэтью совершенно правильный. Осколки и многоядерные ядра - это яблоки и апельсины. У вас не может быть единого запроса к нескольким ядрам. Вы должны выполнять отдельные запросы для каждого ядра (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=:).

1 голос
/ 29 апреля 2015

Распределенный поиск - правильный ответ. Предлагаю настроить распределенный поиск прямо в обработчике. Вы можете настроить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...