Использование шардинга с nhibernate.search для разделения индексов

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам