使用nhibernate.search进行分区索引

使用nhibernate.search进行分区索引,nhibernate,lucene.net,sharding,nhibernate.search,Nhibernate,Lucene.net,Sharding,Nhibernate.search,我们正在使用NHibernate 3.1和NHibernate.Search在Lucene之上进行全文搜索。到目前为止,它工作得很好,但我们存在一些可伸缩性问题: 在我们的数据库中,我们有几个不同客户的数据-每个客户都不能看到彼此的数据。到目前为止,我们已经用过滤器解决了这个问题,但问题是我们的索引越来越大,并且我们遇到了悲观锁定阻碍查询的问题 我们要做的是使用Lucene的分片功能对每个客户的索引进行分区(所有实体都有一个带有此customerId的属性) 有人在NHibernate搜索中尝试

我们正在使用NHibernate 3.1和NHibernate.Search在Lucene之上进行全文搜索。到目前为止,它工作得很好,但我们存在一些可伸缩性问题:

在我们的数据库中,我们有几个不同客户的数据-每个客户都不能看到彼此的数据。到目前为止,我们已经用过滤器解决了这个问题,但问题是我们的索引越来越大,并且我们遇到了悲观锁定阻碍查询的问题

我们要做的是使用Lucene的分片功能对每个客户的索引进行分区(所有实体都有一个带有此customerId的属性)


有人在NHibernate搜索中尝试过这一点吗?有可能吗?

不确定您的数据库/会话工厂设置是什么样的,但您可以使用会话工厂,针对每个客户指向不同的索引目录。如果您只有一个DB,这可能有点奇怪,但如果您在一个数据库中支持多个客户的方法是合理的,那么这应该是非常轻松的


如果这听起来很有趣,请看一看。

嗯。。。我想,我可以对SessionFactory使用Dictionary'ish方法,这将为每个客户实例化不同的SessionFactory。它还可以更灵活地使用二级缓存(因为配置文件(每个客户)显示了非常不同的用法。感谢您的时间:-)。