Локальный поиск
Docara строит поисковый индекс вместе со статическим сайтом. Поиск работает в браузере, не отправляет запросы во внешний сервис и не требует серверной базы данных.
Включение
Добавьте настройки в docara.json:
{
"schema": "docara.site.v1",
"search": {
"enabled": true,
"indexed": true
}
}
enabledпоказывает кнопку и диалог поиска на страницах текущей области;indexedдобавляет страницы области в индекс.
Обе настройки наследуются через section.json и page sidecar. Ветка
поддерживает $reset так же, как branding, layout, navigation и settings.
Исключение страниц
Чтобы не показывать раздел в результатах, задайте в его section.json:
{
"schema": "docara.section.v1",
"search": { "indexed": false }
}
navigation.hidden и search.indexed решают разные задачи. Страница может не
занимать место в меню, но оставаться доступной по прямой ссылке и через поиск.
Обе настройки не являются контролем доступа: собранная HTML-страница и сам
JSON-индекс остаются публичными статическими файлами. Не публикуйте в portable
site секретные или закрытые данные.
Если поиск включён для locale, но все его страницы исключены, сборка
останавливается с SEARCH_INDEX_LOCALE_EMPTY до очистки предыдущего output.
Что индексируется
В индекс входят:
- title и description страницы;
- путь разделов из того же дерева, что используется меню;
- заголовки Markdown;
- видимый текст абзацев, списков, таблиц и code blocks;
- текстовые параметры поддержанных Smart-компонентов.
script, style, template, скрытые узлы и технические props не
индексируются. Для нового Smart-компонента сначала нужно явно описать его
текстовую проекцию; иначе сборка завершится ошибкой вместо неполного индекса.
Работа в браузере
Индекс загружается только после первого открытия диалога. Нажмите кнопку
«Поиск» или Cmd/Ctrl + K, введите минимум два символа и используйте стрелки и
Enter для перехода. Escape закрывает диалог и возвращает фокус на кнопку.
Поиск нормализует регистр, Unicode и русские е/ё. Результаты ранжируются по
title, заголовкам, description и основному тексту. Это локальный полнотекстовый
поиск с prefix matching; он пока не заявляет исправление опечаток, морфологию
или семантический AI-поиск.
Если поиск не работает
- Убедитесь, что
search.enabled: trueдошло до resolved page plan. - Проверьте наличие
_docara/search-index.jsonи_docara/search.js. - Запустите
php vendor/bin/docara verify-static build_production. - Исправьте первый search error code и пересоберите сайт.
Сообщение «Ничего не найдено» означает валидный пустой результат. Сообщение «Поиск временно недоступен» означает, что индекс не загрузился или нарушил закреплённый контракт.