使用分片和 nhibernate.search 进行分区索引
我们在 Lucene 之上使用 NHibernate 3.1 和 NHibernate.Search 进行全文搜索。到目前为止,它运行良好,但我们存在一些可扩展性问题:
在我们的数据库中,我们有几个不同客户的数据 - 每个客户都不能看到彼此的数据。到目前为止,我们已经使用过滤器解决了这个问题,但问题是我们的索引变得越来越大,并且我们遇到了悲观锁定阻碍查询的问题。
我们想要做的是使用 Lucene 的分片功能对每个客户的索引进行分区(所有实体都有一个带有此 customerId 的属性)。
有没有人在 NHibernate Search 中尝试过这个 - 这可能吗?
We are using NHibernate 3.1 and NHibernate.Search on top of Lucene for full-text searches. So far it is working great, but we have some scalability problems:
In our database, we have several different customers' data - each customer must not be able to see each other's data. So far, we have solved it using Filters, but the problem is that our index is growing huge, and we have problems with the pessimistic locking holding up queries.
What we would like to do is partition the index per customer (all entities have a property with this customerId) using the sharding feature of Lucene.
Has anyone tried this in NHibernate Search - is it even possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定您的数据库/会话工厂设置是什么样的,但您可以使用会话工厂指向每个客户的不同索引目录。如果您只有一个数据库,这可能有点奇怪,但如果您在一个数据库中支持多个客户的方法是合理的,那么这应该是非常轻松的。
如果这听起来很有趣,请看看这个答案。
Not sure what your database / session factory setup is like, but you could use a session factory pointing to a different index directory per customer. If you've only got a single DB this could be kind of strange but it should be pretty painless if your approach to supporting multiple customers in 1 database is sound.
If this sounds interesting, take a look at this answer.