Как поддерживать индексы Sitecore Lucene в огромном веб-магазине доставки контента?

Я знаю, что индексы Lucene не могут быть разделены:

Sitecore хранит локальную копию индекса Lucene в файловой системе каждый экземпляр и не поддерживает обмен индексами между экземпляры.

Можно ли xcopy индексы Lucene между CM и CD?

Есть ли какой-нибудь другой подход или рекомендация для поддержания индексов на 30+ серверах доставки контента?

Обновление: Im полностью осознает, что компакт-диски должны начать собственное обновление индекса. С более чем 30 серверами CD Im думает, что, может быть, будет период времени, когда не все CD-сервер имеют одинаковый набор индексов. Я боюсь, что по некоторым причинам индексы потерпят неудачу на некоторых серверах CD и отслеживают, почему/где будет ад. Вот почему попытка обнаружить, есть ли альтернативный подход, когда индексы поддерживаются в одном месте (в некотором роде разделены) и в основном мгновенно реплицируются на все CD

Ответ 1

Вам нужно включить History Engine для веб-базы данных CM и CD-серверов.

См. эту выдержку из руководства по масштабированию Sitecore.

Чтобы включить History Engine для базы данных Sitecore: В web.config файл, добавьте следующий раздел в /configuration/sitecore/databases/database, где id равно имя базы данных:

<Engines.HistoryEngine.Storage>
  <obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">
   <param connectionStringName="$(id)" />
   <EntryLifeTime>30.00:00:00</EntryLifeTime>
  </obj>
</Engines.HistoryEngine.Storage>
<Engines.HistoryEngine.SaveDotNetCallStack>false</Engines.HistoryEngine.SaveDotNetCallStack>

Когда элемент Sitecore изменен, индексы Lucene обновляются немедленно в экземпляре Sitecore, где было сделано изменение. На удаленные серверы в многосерверной среде, индексы Lucene не обновляется сразу после изменения элемента. Индексы Lucene автоматически обновляются после интервала, определенного в файла web.config, в параметре Indexing.UpdateInterval и с помощью минимальное время ожидания между двумя последующими обновлениями, определенными в Indexing.UpdateJobThrottle.

Смотрите здесь

Ответ 2

Вы также можете рассмотреть возможность использования open-source Sitecore Lucene Refresher, который будет запускать операцию обхода индекса в памяти и будет передавать индекс обратно файловой системы, чтобы вы не потеряли содержимое индекса во время процесса перестройки. Это может по крайней мере помочь. Тогда, возможно, настройте какой-то агент для запуска этой операции обхода/перестройки в определенное время суток, чтобы все CD-серверы выполняли это одновременно синхронно.

Ответ 3

Ответ Уэсли Ломакс верен. Тем не менее, я хочу отметить, что я также участвовал в той же ситуации, когда у меня есть элементы в папке с данными в 1000-х годах. Я обновил настройки web.config следующим образом:

 <!--  INDEX FOLDER
        The path to the folder where the Lucene.Net search indexes are stored.
        Default value: $(dataFolder)/indexes
  -->
  <setting name="IndexFolder" value="$(dataFolder)/indexes" />
  <!--  INDEX UPDATE INTERVAL
        Gets the interval between the IndexingManager checking its queue for pending actions.
        Default value: "00:01:00" (1 minute)
  -->
  <setting name="Indexing.UpdateInterval" value="00:00:30" />
  <!--  INDEX UPDATE JOB THROTTLE
        Gets the minimum time to wait between individual index update jobs.
        Default value: "00:00:01" (1 second)
  -->
  <setting name="Indexing.UpdateJobThrottle" value="00:00:01" />

Ответ 4

Следует отметить, что sitecore теперь рекомендует использовать Solr в этом сценарии и не попытаться синхронизировать несколько индексов Lucene:

Общие причины использования Solr вместо Lucene - это...

Если вы используете несколько серверов доставки контента (или планируете сделать это позже), используйте Solr. Solr автоматически работает в такой среде. Ты мог используйте Lucene, но вы должны убедиться, что индексы синхронизированы между серверами.

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

Из Использование Solr или Lucene