Привет,
Я столкнулся с проблемой в модальном окне «Переместить в существующую тему» (ранее на моём сайте это работало, так что, похоже, это регрессия):
- Ввод текста в поле Поиск темы не уточняет результаты
- Сетевые запросы возвращают 200 с правильными параметрами
- В консоли браузера нет ошибок JS
- Общий поиск по сайту
/searchработает как ожидалось - Проблема сохраняется даже после пересборки
Пример выполняемого запроса:
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular
Список выбора остаётся статичным набором тем и не меняется при изменении параметра
term.
После отладки на стороне клиента я сначала предположил, что это может быть связано с отсутствием расширения pg_trgm в Postgres, но хотел подтвердить это перед дальнейшими действиями.
Я выполнил следующие команды:
./launcher enter app
rails c
ActiveRecord::Base.connection.execute(
"SELECT extname FROM pg_extension WHERE extname = 'pg_trgm';"
).to_a
Такая диагностика была бы верной, если бы команда вернула:
[]
Однако вместо этого она вернула:
[{"extname"=>"pg_trgm"}]
Таким образом, pg_trgm включён, и это, похоже, не является корневой причиной.
Поэтому я планирую выполнить следующую команду:
./launcher enter app
rake search:reindex
Это может быть актуально, поскольку одна из категорий моего форума содержит очень большое количество тем.
Сбивает с толку следующее:
- Discourse в остальном продолжает работать нормально
- Полный поиск
/searchработает как ожидалось - Автодополнение при перемещении темы тихо деградирует вместо того, чтобы выдавать предупреждение
В рамках отладки я также включил настройку «Предпочитатьать недавние посты в поиске» и перезагрузил браузер. Это не повлияло на поведение — поиск в окне «Переместить в существующую тему» по-прежнему не уточняет результаты при вводе.
Поскольку эта настройка влияет только на ранжирование в полном поиске /search, а не на конечную точку выбора темы, это согласуется с тем, что проблема специфична для /search/query, а не связана с общей производительностью поиска.
Перед запуском rake search:reindex я хотел перепроверить обоснование:
Выбор темы при перемещении использует /search/query с параметром search_for_id=true, который опирается на индексированные запросы более напрямую, чем конечная точка полного поиска /search. Поэтому частично устаревший или несогласованный поисковый индекс может влиять на выбор темы, даже если полный поиск продолжает работать.
Учитывая, что:
- конечная точка вызывается,
- ответы возвращают 200,
pg_trgmвключён,- и переключение настройки «Предпочитатьать недавние посты в поиске» не даёт эффекта,
Полный запуск rake search:reindex кажется следующим логичным шагом для исключения несогласованности индекса. Отдельно стоит отметить, что отсутствие каких-либо предупреждений или обратной связи делает это особенно запутанным с точки зрения UX администратора.