У меня нет опыта работы с самим "Sitecore", но вот моя история.
Мы недавно включили поиск по индексу (используя Lucene.Net) для нашей подсистемы электронной коммерции. Процесс обновления индекса в нашем случае может занять около получаса (~ 50 000 продуктов + много связанной информации). Чтобы предотвратить ответы типа «отказ в обслуживании» во время обновления индекса, мы сначала создаем его «резервную» версию (просто копируя каталог индекса в другое место), и все дальнейшие запросы перенаправляются для использования этой «резервной» версии. Когда обновление индекса завершено, мы удаляем резервную копию, чтобы клиенты начали использовать обновленную (или «живую») версию индекса. Это также помогает в случае любых необработанных исключений, которые могут возникнуть во время процесса обновления, потому что вы можете оказаться в ситуации, когда у вас вообще нет индекса (а в нашем случае клиенты всегда могут использовать «резервную» версию).
Ссылка API (Lucene 2.4) объекта Lucene.Net.Index.IndexWriter
сообщает следующее:
Обратите внимание, что вы можете открыть индекс с помощью
create=true
даже когда читатели
используя индекс. Старые читатели
продолжить поиск «момент времени»
снимок они открыли, и не будут
увидеть вновь созданный индекс, пока они
повторно открыть.
Так что, по крайней мере, вам не нужно беспокоиться о клиентах, которые в данный момент ищут в вашем индексе.
Надеюсь, это поможет вам принять правильное решение.