Синхронизация индексов Lucene на 2 серверах приложений - PullRequest
2 голосов
/ 18 июня 2009

У меня есть веб-приложение asp.net, размещенное на веб-сервере (IIS 7). Оно использует Lucene для поиска. Поисковые запросы Lucene обслуживаются службами .Net WCF, расположенными на 2 серверах приложений (IIS 7). 2 сервера приложений сбалансированы по нагрузке с помощью netscaler.

На обоих этих серверах размещена служба Windows .net, которая ежедневно обновляет поисковые индексы на соответствующих серверах.

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

Любые входные данные, пожалуйста?

Спасибо за чтение!

1 Ответ

1 голос
/ 18 июня 2009

Обычно вам нужны две идентичные копии одного и того же индекса Lucene - по одной для каждого сервера IIS. Я считаю, что самый простой подход - создать обновленный индекс на одном компьютере, оптимизировать его, а затем скопировать на другой компьютер. В Linux я бы использовал rsync , но я не знаю эквивалентов Windows. См. Джеффа Этвуда об альтернативах Windows rsync . В качестве альтернативы вы можете выполнить одинаковые команды обновления индекса для обоих индексов Lucene и убедиться, что они были обработаны правильно. Это сложнее с технической точки зрения и полезно только тогда, когда у вас есть более частые обновления. Пожалуйста, смотрите Масштабирование Lucene и Solr для более широкого обсуждения распределенных индексов Lucene.

...