×

Устранение неполадок: ошибка поиска 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).
 

Шаг 1: Подождите несколько минут

 
Если вы настроили поисковую систему только что или загрузили новые HTML-файлы недавно, процесс индексации может быть ещё не завершен.
 

Что нужно сделать:

 
  • Подождать 5 минут.
  • Попробовать выполнить поиск снова.
 
Если ошибка не исчезла через 5 минут: перейдите к Шагу 2.
 

Шаг 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.
 

Шаг 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 минут и повторите проверку.
 

Шаг 4: Проверьте имена переменных окружения

 
Этот шаг требует доступа к вашему файлу 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 минут и повторите проверку.
 

Шаг 5: Проверьте URL

 
Этот шаг требует доступа к вашему файлу 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 минут и повторите проверку.
Справочная система создана в Dr.Explain