Как сохранить доступность индекса Lucene при перестройке?

При перестроении индексов на сервере доставки контента любые компоненты, которые ищут этот индекс, перестают работать (разрушаются). Как я могу перестроить свой индекс, не вызывая недоступность компонентов поиска? Кроме того, есть ли стандартный способ справиться с этим?

Код, который я использую для регулярного переиндексации:

 Sitecore.Data.Database db = Sitecore.Configuration.Factory.GetDatabase(DBName);
 Index index = db.Indexes[IndexName];
 index.GetSearcher(db).Close();
 index.Rebuild(db);

Чтобы дать немного контекста:

  • Версия Sitecore - 6.4.1 (рев. 110324)
  • Индекс необходимо перестроить, поскольку он содержит некоторые данные из Sitecore и некоторые данные из внешней системы.

1 ответ

Решение

Как советует Марк Урсино в посте Как поддерживать индексы Sitecore Lucene в огромном веб-ферме по доставке контента:

Вы можете рассмотреть возможность использования https://github.com/Velir/Sitecore-Lucene-Refresher с открытым исходным кодом, который запустит операцию сканирования индекса в памяти и передаст индекс обратно в файловую систему, чтобы вы не потеряли содержимое индекса в процессе перестроения.

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