Устранение неполадок: ошибка поиска 409
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 409.
Ошибка 409 означает, что поисковый индекс не найден. Обычно это происходит, когда индексация всё ещё выполняется или когда путь (или URL) к вашим HTML-файлам настроен неверно.
Наиболее вероятные причины
-
Индексация выполняется: подождите 5 минут для завершения индексации.
-
Неправильное имя переменной окружения: используйте формат DREX_CONTENT_ROOT_XXX (например, DREX_CONTENT_ROOT_EN).
-
Неправильный путь монтирования: путь монтирования тома не соответствует фактическому расположению HTML-файлов.
-
Неправильный путь URL: если вы используете URL-адреса вместо путей, убедитесь, что URL указывает на папку (а не на индексный файл) и заканчивается слэшем (например, https://example.com/docs/, а не https://example.com/docs/index.htm).
Если вы настроили поисковую систему только что или загрузили новые HTML-файлы недавно, процесс индексации может быть ещё не завершен.
Что нужно сделать:
-
Подождать 5 минут.
-
Попробовать выполнить поиск снова.
Если ошибка не исчезла через 5 минут: перейдите к Шагу 2.
Этот шаг требует доступа к вашему серверу через SSH и Docker.
Перейдите в каталог с файлом docker-compose.yaml (например, командой cd /opt/drexplain-search) и выполните команду:
docker compose logs drexplain-search-backend-controller
Обратите внимание на следующие сообщения:
-
"Configuration error: no content root folders..." — бэкенд не может найти ваши HTML-файлы. Убедитесь, что переменная окружения DREX_CONTENT_ROOT_XXX задана правильно. Перейдите к Шагу 3.
-
"Failed to load descriptor ID from ..." — бэкенд не может загрузить файлы по указанному вами URL. Убедитесь, что переменная окружения DREX_CONTENT_ROOT_XXX задана правильно. Перейдите к Шагу 5.
-
"Search index doesn't exist, creating index" — индексация выполняется. Подождите ещё несколько минут.
-
"Finished updating search index" — все данные успешно отправлены в поисковую систему (Solr). Поисковой системе может потребоваться ещё несколько минут, чтобы подготовить поисковый индекс для обработки запросов. Подождите несколько минут и попробуйте выполнить поиск снова.
Если вы видите ошибки конфигурации: перейдите к Шагу 3.
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
Убедитесь, что монтирование тома выглядит следующим образом:
volumes:
- /путь/к/вашим/html/файлам:/var/www/html:ro
Наиболее вероятные ошибки:
-
Путь на хосте (/путь/к/вашим/html/файлам) не существует или указан неверно.
-
Путь внутри контейнера (/var/www/html) не соответствует тому, что указан в ваших переменных окружения DREX_CONTENT_ROOT_XXX.
-
Путь содержит символические ссылки (папка de_search должна быть реальной папкой, а не символической ссылкой).
Чтобы проверить существование пути, выполните следующую команду:
ls -ld /путь/к/вашим/html/файлам
Вы должны увидеть запись с правами доступа и датой создания/изменения.
Если путь указан неверно: исправьте монтирование тома в файле docker-compose.yaml и перезапустите службы:
docker compose down
docker compose up -d
Затем подождите 5 минут и повторите проверку.
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
Переменная окружения должна иметь корректное название:
environment:
- DREX_CONTENT_ROOT_XXX=/var/www/html
Рекомендация по именованию: используйте шаблон DREX_CONTENT_ROOT_XXX, где "XXX" — это код языка или последовательность, состоящая из заглавных латинских букв A–Z, цифр 0–9 и символа подчёркивания.
Если имя указано неверно: исправьте его и перезапустите службы:
docker compose down
docker compose up -d
Затем подождите 5 минут и повторите проверку.
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
Переменная окружения должна быть названа правильно:
environment:
- DREX_CONTENT_ROOT_XXX=https://ваш-сайт.com/docs/
Наиболее вероятные ошибки:
-
Именование переменной DREX_CONTENT_ROOT-XXX вместо DREX_CONTENT_ROOT_XXX (использование символов, отличных от заглавных латинских букв A–Z, цифр 0–9 и символа подчёркивания).
-
Указание URL на (индексный) файл вместо содержащей его папки, например, https://ваш-сайт.com/docs/index.htm (неверно) вместо https://ваш-сайт.com/docs/ (верно).
-
URL требует аутентификации. Для корректной работы поискового движка сервер, на котором находятся HTML-файлы, должен предоставлять поисковому движку доступ без пароля или других способов аутентификации. Например, вы можете добавить IP-адрес сервера с поисковым движком в список тех, которые могут получать доступ к файлам без аутентификации. Либо предоставьте поисковому бэкенду доступ к HTML-файлам через монтирование тома.
После внесения исправлений перезапустите службы:
docker compose down
docker compose up -d
Затем подождите 5 минут и повторите проверку.