Поиск кластерного индекса Lucene NHibernate - PullRequest
2 голосов
/ 05 марта 2010

Мы используем NHibernate Search в приложении, которое будет кластеризовано.Я читал о подходах к ведению отдельных коллекций, в частности о конфигурации master / slave, и мне было интересно, как можно реализовать ее с помощью MSMQ, если на самом деле существует реализация для этого в настоящее время.Реализация JMS (как описано в NHibernate Search in Action) кажется мне немного пугающей, особенно когда мы используем среду .NET.

В качестве альтернативы, я открыт для предложений относительно создания экземпляров локальных RAMDirectories дляколлекции люцена.Я знаю, что Lucene может создать RAMDir из FSDir, и я знаю, как инициализировать приложение NHibernate с пустым RAMDir, но я немного теряюсь, когда дело доходит до инициализации приложения с RAMDir из существующего (общего сетевого) FSDir.

Или действительно любые другие подходы.

Приветствия, Стив

1 Ответ

0 голосов
/ 06 марта 2010

Я на самом деле недавно столкнулся с этой самой проблемой. В первую очередь потому, что мы использовали общий доступ к нескольким веб-приложениям для обновления индексов в реальном времени. Однако мы пострадали от искажения индекса и не могли понять, почему, а также из-за того факта, что он не будет работать в кластерной среде.

Мой подход заключался в следующем: использовать сервис, который схематически индексирует новые сущности с очень частыми интервалами, а также переиндексировать все через определенные промежутки времени. Я также автоматически запускаю оптимизацию, поскольку NHSearch, похоже, еще не поддерживает автоматическую оптимизацию.

При запуске приложения я индексирую все в RAMDirectoryProvider.

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

Я провел небольшое исследование о поставщиках Master-Slave, однако, думаю, мне показалось, что NHSearch - это скорее образ, а не оригинальная Java-реализация.

Для меня оптимальным решением было бы иметь поставщика Master-Master, который бы перекрестно применял все обновления индекса на всех узлах. Я не исследовал, сколько было бы работы, чтобы написать DirectoryProvider самостоятельно, но это был бы вариант, но также много усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...