2016-04-26 9 views
0

Мы пытаемся реализовать двумерный кластер облачных облаков, где первое измерение представляет собой коллекцию, а второе - осколок. Сбор должен определяться в времени выполнения на основе свойств документа.Как установить Solr облачную коллекцию динамически весной Data Solr 2.0.1?

Я вижу, что эта функция поддерживается solrj- CloudSolrClient имеет соответствующие методы, которые принимают название коллекции, например add(String collection, SolrInputDocument doc), поэтому я зарегистрировал @Bean CloudSolrClient("zookeeper.host"). Но, по-видимому, этого недостаточно, потому что методы в SolrTemplate, которые используются Spring Data Solr, не принимают имя коллекции.

Поскольку SolrTemplate использует SolrClient под капотом я попытался обойти эту проблему, простирающуюся SolrTemplate и верховные saveBean и saveBeans методы делегирования CloudSolrClient#add(String collection, SolrInputDocument doc) и CloudSolrClient#add(String collection, Collection<SolrInputDocument> docs). Он работал нормально, пока мне не нужно было делать то же самое для запросов. SolrTemplate#executeSolrQuery является закрытым пакетом и окончательным, поэтому я не могу его переопределить. И вот я застрял!

Подводя итог моему вопросу: есть ли способ указать имя коллекции в данных весны solr в runtime?

Я был бы очень признателен за любую помощь!

С уважением, Евгений

ответ

0

Моя проблема была немного другой, но у меня была также проблема с названием коллекции в запросах и в моем случае добавления @SolrDocument (solrCoreName = «core_to_which_model_class_belong») для модели класса решить эту проблему ,

+0

Но, к сожалению, это не кажется динамичным. Мне нужно было хранить документы в разных коллекциях, а не в предопределенной. – Eugeny

+0

Я немного отлаживал solrj и spring-data-solr code, и кажется, что у разных клиентов solr разные подходы. Посмотрите на этот фрагмент кода, например: 'if (collection == null)' 'collection = (reqParams! = Null)? reqParams.get ("collection", getDefaultCollection()): getDefaultCollection(); ' Это от CloudSolrClient. Похоже, вам нужно предоставить параметр запроса, чтобы поручить клиенту выполнить ваш вызов против выбранной коллекции. Однако я не вижу никакого метода в spring-data-solr для передачи запроса. Он создается внутри solrj –

+0

Да, спасибо! Я тоже видел этот код. Я закончил выполнение запросов, используя solrj. – Eugeny

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

  • Нет связанных вопросов^_^