Использование шардинга с nhibernate.search для разделения индексов - PullRequest
0 голосов
/ 28 июля 2011

Мы используем NHibernate 3.1 и NHibernate.Search поверх Lucene для полнотекстового поиска.Пока он работает отлично, но у нас есть некоторые проблемы с масштабируемостью:

В нашей базе данных у нас есть данные нескольких разных клиентов - каждый клиент не должен видеть данные друг друга.Пока что мы решили эту проблему с помощью Filters, но проблема в том, что наш индекс растет огромным, и у нас есть проблемы с пессимистической блокировкой, задерживающей запросы.

Что мы хотели бы сделать, так это разделить индекс поcustomer (все объекты имеют свойство с этим customerId), использующий функцию шардинга Lucene.

Кто-нибудь пробовал это в поиске NHibernate - возможно ли это даже?

1 Ответ

1 голос
/ 28 июля 2011

Не уверен, каковы настройки вашей базы данных / фабрики сеансов, но вы можете использовать фабрику сеансов, указывающую на разные каталоги индексов для каждого клиента. Если у вас есть только одна БД, это может быть довольно странно, но это будет довольно безболезненно, если ваш подход к поддержке нескольких клиентов в 1 базе данных будет правильным.

Если это звучит интересно, взгляните на этот ответ .

...