Я не пробовал это сам, но AddConfiguration принимает словарь cfgProperties, который, я думаю, вы можете передать конкретное значение hibernate.search.default.indexBase для арендатора.
Я посмотрел на это, добавив ключ, как описано выше, вызовет проблему, если вы попытаетесь использовать CfgHelper.LoadConfiguration(), так как он вернет значение null.
Но вы можете настроить NHSearch использовать различные каталоги для каждого завода с использованием ключа фабрики:
<nhs-configuration xmlns="urn:nhs-configuration-1.0">
<search-factory sessionFactoryName="YOUR_TENANT1_FACTORY_KEY">
<property name="hibernate.search.default.indexBase">~\IndexTenant1</property>
</search-factory>
<search-factory sessionFactoryName="YOUR_TENANT2_FACTORY_KEY">
<property name="hibernate.search.default.indexBase">~\Tenant2</property>
</search-factory>
</nhs-configuration>
Если вы следуете инструкциям по http://wiki.sharparchitecture.net/Default.aspx?Page=NHibSearch Вы должны были бы изменить метод GetIndexDirectory к
private string GetIndexDirectory() {
INHSConfigCollection nhsConfigCollection = CfgHelper.LoadConfiguration();
string factoryKey = SessionFactoryAttribute.GetKeyFrom(this); // Change this with however you get the factory key for your tenants,
string property = nhsConfigCollection.GetConfiguration(factoryKey).Properties["hibernate.search.default.indexBase"];
var fi = new FileInfo(property);
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fi.Name);
}