Я сам не пробовал, но 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);
}