Онлайн-руководство разработчика NetCat
Новогодние скидки до 25%!
Подробнее
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Расширенные настройки

Дополнительные параметры, доступные для редактирования на вкладке «Настройки» — «Системные» в панели управления модулем, позволяют производить тонкую настройку работы всех частей модуля поиска.

При стандартной конфигурации сервера модификация данных параметров обычно не требуется.

Выбор поисковой библиотеки

SearchProvider — название класса, отвечающего за индексирование и поиск (должен реализовывать интерфейс nc_search_provider).

Настройки индексирования

IndexerSecretKey — секретный ключ, используется при вызове скрипта через планировщик задач.

MinScheduleInterval — минимальный промежуток времени (в секундах), после которого индексирование области, уже находящейся в очереди заданий, будет поставлено в очередь как новое задание. Иными словами, если несколько запросов на индексирование одной и той же области сайта будут созданы в течение MinScheduleInterval, они не будут добавлен в очередь. Значение по умолчанию — 300 (т. е. 5 минут).

IndexerSaveTaskEveryNthCycle — частота сохранения в базу промежуточных результатов задачи индексации. Значение по умолчанию — 20, т. е. информация о задаче индексирования (количество обработанных страниц, последнее время активности) сохраняются после обработки каждых 20 страниц.

IndexerRemoveIdleTasksAfter — считать задачу индексирования зависшей, если последнее её сохранение (см. параметр IndexerSaveTaskEveryNthCycle) было давнее, чем указанное количество секунд. «Зависшая» задача будет удалена при следующем запуске индексирования. По умолчанию — 900 (т. е. 15 минут). Такое большое значение по умолчанию установлено потому, что при индексировании сайтов с большим количеством информации финальный этап индексирования — оптимизация индекса — может занимать значительное время, в течение которого обновление информации о задаче производиться не будет.

CrawlerMaxRedirects — допустимое количество переадресаций, которые будут обработаны при загрузке страниц. По умолчанию — 0 (переадресации игнорируются), так как из-за переадресаций поисковый робот может скачать страницы другого сайта (при переадресации не проверяется принадлежность страницы к индексируемому сайту).

Настройки индексирования в окне браузера

IndexerTimeThreshold — управление перезапуском скрипта индексирования в браузере по времени.
Возможные значения:

≤1: перезапуск, если с момента (пере)запуска скрипта прошло IndexerTimeThreshold × 100% времени от значения настройки PHP max_execution_time
>1: перезапуск в момент, когда от запуска скрипта прошло IndexerTimeThreshold секунд
0: отключить перезапуск по времени (индексировать все страницы без перезагрузки страницы) — не рекомендуется при стандартных настройках веб-сервера
Значение по умолчанию — 0.7, т. е. скрипт индексировния, запущенный в браузере, будет перезапущен через 0.7 × max_execution_time секунд.
Следует устанавливать значение параметра таким образом, чтобы оно было несколько меньше, чем max_execution_time, так как лимит времени проверяется только после окончания индексирования каждой страницы.

IndexerMemoryThreshold — управление перезапуском скрипта индексирования в браузере по объему выделенной памяти. (При перезапуске происходит сохранение информации в индекс, поэтому при этом происходит уменьшение необходимого объема памяти.)
Возможные значения:

≤1: перезапуск, если скрипту индексирования выделено более IndexerMemoryThreshold × 100% памяти от значения настройки PHP memory_limit
>1: перезапуск, если скрипту индексирования выделено более IndexerMemoryThreshold байт оперативной памяти
0:  отключить перезапуск

IndexerInBrowserSlowdownDelay — задержка (в секундах) после выполнения каждых 10000 операций (ticks) при индексировании из браузера. Замедление работы быть использовано в случаях, когда необходимо снизить нагрузку на процессор. Может быть задано дробное значение (разделитель — точка), например, "0.25" (250 мс).

Настройки индексирования при запуске из cron и консоли (по частям или за один проход)

IndexerConsoleSlowdownDelay  — замедление работы при индексировании, запущенном из консоли или планировщика задач (аналогично параметру IndexerInBrowserSlowdownDelay).

Настройки индексирования по частям при запуске из cron

Данные настройки используются в скрипте indexing/console_batch.php (см. раздел «Индексирование „по частям“ из cron»).

IndexerConsoleMemoryThreshold — перезапуск по объёму выделенной памяти (аналогично параметру IndexerMemoryThreshold, см. выше).

IndexerConsoleTimeThreshold — перезапуск по времени работы скрипта (аналогично параметру IndexerTimeThreshold, см. выше).

IndexerConsoleDocumentsPerSession — перезапуск, если проиндексировано указанное количество документов (0 — не проверять количество проиндексированных документов).

IndexerConsoleRestartHungTasks — определяет, что происходит с задачами, которые не обновлялись более IndexerRemoveIdleTasksAfter секунд. Данная ситуация может возникнуть в случае, если запущенный скрипт переиндексирования не закончил свою работу из-за того, что был принудительно завершён сервером.
Возможные значения:

0: задача считается зависшей и удаляется
1: задача возобновляется по истечении IndexerRemoveIdleTasksAfter секунд. Будьте внимательны при включении этой опции: значение IndexerRemoveIdleTasksAfter должно быть значительно больше, чем значение IndexerConsoleTimeThreshold, иначе индекс может быть повреждён!

Параметры обработки документов

IndexerNormalizeLinks — нормализация ссылок при индексировании (все параметры в URL сортируются в алфавитном порядке для того, чтобы избежать повторного запроса страниц, если в ссылках параметры перечислены в разном порядке, например /sub/?tag=22&curPos=10 и /sub/?curPos=10&tag=22).
Возможные значения:

0: выключена (не рекомендуется)
1: включена (значение по умолчанию)

MaxTermsPerField — максимальное число терминов (слов и чисел) в одном поле, т. е. максимальная длина поля в индексе в словах. Данный параметр можно использовать в тех редких случаях, когда ресурсы сервера (память или допустимое время работы скрипта) не позволяют обрабатывать документы большого размера.

Расширенные настройки поисковых запросов

MaxTermsPerQuery — максимальное число терминов (слов и чисел) в одном поисковом запросе.

Настройки Zend Search Lucene

Параметры Zend Search Lucene позволяют управлять поведением данной библиотеки. Подробнее — в документации Zend Framework: Index Optimization, Indexing Performance.

ZendSearchLucene_MaxBufferedDocs — количество документов, хранимых в памяти перед записью в виде сегмента на диск. По умолчанию — 10. Большие значения могут ускорить индексирование, но приведут к большему расходованию оперативной памяти.

ZendSearchLucene_MaxMergeDocs — максимальное количество документов, объединяемых в один сегмент при авто-оптимизации. По умолчанию — не ограничено (более 2 миллиардов).

ZendSearchLucene_MergeFactor — значение, определяющее частоту запуска авто-оптимизации индекса Lucene. По умолчанию — 10.

Примерное количество сегментов в индексе Lucene можно примерно определить по формуле:

NumberOfSegmentsMaxBufferedDocs + MergeFactor × log MergeFactor (NumberOfDocuments / MaxBufferedDocs)

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

Настройки phpMorphy

PhpMorphy_LoadDictsDuringIndexing — определяет способ работы со словарями морфологического анализатора. При значении, отличном от 0, false или пустой строки, при инициализации библиотеки словарь полностью загружается в память. При обработке большого количества документов загрузка словарей в память позволяет ускорить морфологический анализ в 1,5—2,5 раза (в отдельных случаях, например, при индексировании отдельного документа, эффект может отсутствовать, так как для загрузки словарей в память требуется дополнительное время при инициализации библиотеки). Используйте данную опцию, если конфигурация сервера позволяет выделить не менее 256 мегабайт оперативной памяти для скрипта индексирования.
Значение по умолчанию — 0 (библиотека работает со словарями, расположенными на диске).

Работа с индексом, хранимым в базе данных (nc_search_provider_index)

DatabaseIndex_LoadAllCodesForIndexing — загружать коды всех известных терминов в память перед индексированием.
Возможные значения:

0: не загружать (значение по умолчанию)
1: загружать в память коды всех терминов. Данная опция ускоряет индексирование, но требует большой объём оперативной памяти при индексировании. Используйте только в тех случаях, когда PHP-скрипту индексирования доступно как минимум 128 Мб оперативной памяти.

DatabaseIndex_MaxSimilarityCandidates — максимальное количество слов, проверяемых на похожесть при нечётком поиске (term~, term~0.5). Значение по умолчанию: 25000.
Алгоритм работы с такими запросами устроен таким образом, что сначала из базы данных выбираются все подходящие по длине варианты, а затем в скрипте вычисляется расстояние Левенштейна для каждого слова-кандидата. Для снижения нагрузки на сервер при поиске максимально количество слов-кандидатов ограничено.

DatabaseIndex_MaxRewriteTerms — максимальное количество терминов, использующихся при подстановке (поиск по похожести, по шаблону и по текстовому интервалу производится путём замены соответствующего выражения списком возможных значений). Значение по умолчанию: 2000.

DatabaseIndex_UseUtf8Levenshtein — управляет способом определения расстояния Левенштейна при поиске похожих терминов при нечётком поиске. Возможные значения:

0: использовать функцию levenshtein(). Данная функция может некорректно вычислять расстояние для UTF8-строк, но работает быстрее. Значение по умолчанию.
1: использовать метод, учитывающий особенности текста в UTF-8 — работает медленнее, чем встроенная функция levenshtein(), но учитывает особенности UTF8-строк.

DatabaseIndex_MaxProximityTerms — ограничение количества терминов в поиске по расстоянию (запросы вида "term1 term2"~4). Такие запросы переписываются во все возможные последовательности, поэтому могут давать большое количество условий, что сильно замедлит поиск. Например, поиск по расстоянию четырёх слов даёт (4!)=24 варианта последовательности строк, и для каждой последовательности будут выполняться медленная фильтрация по REGEXP-условиям. Если выражение содержит более указанного количества слов, оно будет переписано как обычный запрос из этих слов, например: "one two three four five"~2(+one +two +three +four +five). Значение по умолчанию: 4.

DatabaseIndex_MaxProximityDistance — максимальное расстояние между словами для поиска по расстоянию (запросы вида "term1 term2"~4). Значение по умолчанию: 10.

DatabaseIndex_AlwaysGetTotalCount — управление подсчётом количества результатов для медленных запросов, таких как поиск фраз и поиск с указанием расстояния между словами.
Возможные значения:

0: не подсчитывать общее количество совпадений. В результатах поиска, если это не последняя страница, будет показана ссылка только на следующую страницу, вне зависимости от общего числа результатов. Отключение подсчета количества совпадений позволяет значительно ускорить поиск фраз по высокочастотным словам (в ряде случаев — на порядок). У пользователя MySQL должны быть права на создание врменных таблиц. Значение по умолчанию.
1: всегда подсчитывать общее количество результатов. Может привести к замедлению поиска по указанным видам запросов и создать повышенную нагрузку на сервер, поскольку требуется полное сканирование результатов поиска.

DatabaseIndex_OptimizationFrequency — параметр, управляющий частотой оптимизации таблиц с поисковым индексом после завершения сеанса индексирования. При оптимизации выполняются SQL-запросы OPTIMIZE TABLE, что может потребовать некоторого времени при большом объёме поискового индекса; таблицы поискового индекса во время оптимизации недоступны для чтения. Оптимизация будет выполняться в среднем один раз за указанное количество индексирований (приблизительно, определяется генератором случайных чисел). Если значение равно 0, оптимизация таблиц не будет выполняться. Если значение равно 1, оптимизация таблиц будет выполняться каждый раз после переиндексирования. Увеличение значения данного параметра в среднем ускорит завершение индексирования, таким образом будет возможен более частый запуск переиндексирования; уменьшение может несколько уменьшить пиковый расход дискового пространства. Значение по умолчанию — 100.

Параметры sitemap.xml

NumberOfEntriesPerSitemap — количество записей в файле sitemap.xml. Если число страниц на сайте больше указанного, sitemap.xml будет разбит на несколько частей.

Описание проекта