Как сохранить доступность индекса 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 с открытым исходным кодом, который запустит операцию сканирования индекса в памяти и передаст индекс обратно в файловую систему, чтобы вы не потеряли содержимое индекса в процессе перестроения.