Для того чтобы на сайте работал поиск, необходимо вначале его проиндексировать. Изменения на сайте не будут учитываться в результатах поиска до тех пор, пока не будет произведено переиндексирование изменившихся страниц.
Индексирование может выполняться в двух режимах: в фоновом (запуск по расписанию или требованию через планировщик операционной системы или инструмент «Управление задачами» NetCat) или по запросу из панели управления модулем (в окне браузера).
Для индексирования в фоновом режиме необходимо настроить запуск индексатора в cron (предпочтительный способ) или в «Управлении задачами».
В UNIX-совместимых операционных системах запуск задач производится через утилиту cron. Как правило, добавить задание для cron можно в панели управления хостингом (или, если этой возможности нет, через SSH-доступ).
Необходимо добавить запуск планировщика индексирования модуля поиска, например, каждую минуту (т.е. каждую минуту будет производиться поиск задач по индексированию сайтов):
php /путь/к/корню/сайта/netcat/modules/search/indexing/console.php
Некоторые сервера могут принудительно завершать скрипты, запущенные из консоли или cron, по превышении определённых лимитов нагрузки на процессор и/или времени работы скрипта. В этом случае предпочтительным вариантом является корректировка соответствующих настроек сервера; в случаях, когда это невозможно, используйте скрипт индексирования console_batch.php
, который останавливается по превышению определённых критериев (объём выделенной памяти, время работы, количество проиндексированных документов с момента вызова скрипта — см. раздел «Расширенные настройки»). Для продолжения индексирования необходимо, чтобы скрипт был вызван повторно.
Данный способ не может использоваться, если в качестве поисковой библиотеки выступает Zend_Search_Lucene, поскольку для завершающих этапов индексирования может потребоваться большое количество времени, в течение которого принудительное завершение скрипта приведёт к повреждению индекса. Если вы вынуждены использовать данный способ переиндексирования, переключите модуль на хранение индекса в базе данных (см. раздел «Способы хранения индекса»).
Если на сервере небольшой лимит на время работы скрипта (меньше 30 секунд), для ускорения индексирования можно запускать скрипт переиндексирования чаще одного раза в минуту следующим образом (корректная работа данного способа не гарантируется на всех серверах):
# запуск каждой задачи раз в минуту * * * * * php /путь/к/корню/сайта/netcat/modules/search/indexing/console_batch.php * * * * * sleep 30 && php /путь/к/корню/сайта/netcat/modules/search/indexing/console_batch.php # скрипт будет запущен раз в 30 секунд
Интервал запуска следует выбирать таким образом, чтобы он был как минимум на 10 секунд больше, чем значение параметра IndexerConsoleTimeThreshold.
Если по какой-либо причине вы не можете добавить запуск планировщика индексирования напрямую в cron, добавьте задачу на странице «Управление задачами» панели управления (меню «Инструменты») со следующей ссылкой на скрипт:
/netcat/modules/search/indexing/netcat_cron.php?secret_key=XXXX
Вместо XXXX необходимо подставить значение, указанное на вкладке «Настройки» — «Системные» в поле «IndexerSecretKey».
Убедитесь, что в расписание cron на вашем сервере добавлен вызов скрипта netcat/admin/crontab.php, иначе индексирование не будет производиться.
Скрипты на серверах SpaceWeb прерываются при превышении нагрузки на процессор: нагрузка на процессор более 10% в течение 20 секунд или нагрузка на процессор более 50% в течение 10 секунд.
В связи с этим рекомендуем производить индексирование только из cron «по частям», запуск скрипта — каждые 30 секунд (пример см. выше). Рекомендуемые значения расширенных настроек модуля поиска:
SearchProvider = nc_search_provider_index IndexerSaveTaskEveryNthCycle = 1 IndexerRemoveIdleTasksAfter = 480 IndexerTimeThreshold = 15 IndexerInBrowserSlowdownDelay = 0.1 # десятичный разделитель — точка! IndexerConsoleTimeThreshold = 15 IndexerConsoleSlowdownDelay = 0.1 IndexerConsoleRestartHungTasks = 1