2013-06-05 2 views
1

Я настроил 2 ядра solr и попытался отобразить 2 разных класса через solrnet. Я сейчас использую Ninject, но хочу изменить, чтобы сказать Windsor, если это невозможно в Ninject. Я пытаюсь использовать AllPropertiesMappingManager для сопоставления. Поскольку мне нужно установить 2 разных уникальных ключа для двух разных ядер, я не знаю, как сделать то же самое с помощью AllPropertiesMappingManager.Как предоставить несколько диспетчеров сопоставления для многократных ядер solr в SolrNet

В настоящее время без использования менеджера Mapping Я получаю сообщение об ошибке: Документ отсутствует обязательное поле uniqueKey: TranscriptId

EDIT: Ошибка исчезает после того, как с помощью атрибута картирования

var solrServers = new SolrServers { 
new SolrServerElement { 
    Id = "markup", 
    Url = solrMarkupUrl, 
    DocumentType = typeof(SolrMarkup).AssemblyQualifiedName, 
}, 
new SolrServerElement { 
    Id = "transcript", 
    Url = solrTranscriptUrl, 
    DocumentType = typeof(SolrTranscript).AssemblyQualifiedName, 
} 
}; 

kernel = new StandardKernel(); 

kernel.Load(new SolrNetModule(solrServers)); 

SolrMarkupCore = kernel.Get<ISolrOperations<SolrMarkup>>("markup"); 
SolrTranscriptCore = kernel.Get<ISolrOperations<SolrTranscript>>("transcript"); 
+0

Я думаю, вам нужно будет собрать все компоненты SolrNet, используя исходный код SolrNetModule в качестве ссылки. https://github.com/mausch/SolrNet/blob/master/Ninject.Integration.SolrNet/SolrNetModule.cs –

+0

Я не знаю, как _IReadOnlyMappingManager_ может быть привязан к двум конкретным объектам и как метод _SetUniqueKey_ работает внутри. И я считаю, что эта проблема не является специфичной для интеграции Ninject, и кажется, что это важная функция для многоядерных процессоров SolrNet w.r.t. Если нет другого способа, я могу пойти с привязкой на основе атрибутов, которая работает нормально. – Kanda

+0

это * * более вопрос Ninject, чем SolrNet. Для этого у SolrNet уже есть все, что вам нужно. Вам просто нужно переделать объекты (либо «вручную», либо с помощью Ninject). –

ответ

0

Вы можете посмотреть на на основе Тесты SolrNet для Ninject с несколькими ядрами - NinjectMultiCoreFixtures.cs для рабочего примера.

Кроме того, если вы не используете диспетчер сопоставлений, вы используете сопоставление Attribute, чтобы настроить его? Поскольку вам все равно нужно настроить сопоставление между классами SolrMarkup и SolrTranscript, чтобы все работало правильно.

+0

К сожалению, NinjectMultiCoreFixtures.cs не охватывает аспекты менеджера сопоставления. В идеале я хочу использовать [настраиваемое сопоставление] (https://code.google.com/p/solrnet/wiki/OverridingMappingMechanism). Но главная проблема с пользовательским сопоставлением или AllPropertiesMappingManager заключается в том, что мы можем предоставить только один менеджер сопоставления для SolrNetModule, но мне нужно отобразить 2 разных типа для каждого ядра solr. И да, временно я использую сопоставление на основе атрибутов, которое работает нормально, но менеджер сопоставления - это то, что я предпочитаю и использую изначально, когда я начинал с одного ядра. – Kanda

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

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