Поиск по тегу с чекбоксом не показывает результаты на мобильных устройствах

:warning: Примечание, август 2023 г.: В более ранних примерах в этой теме упоминаются теги, которые больше не существуют, однако проблема с пустыми результатами сохраняется.

Если я перейду по ссылке https://meta.discourse.org/tags/c/theme/61/theme-component с мобильного устройства, нажму на значок лупы, выполню поиск, например, по запросу «topic», и нажму на флажок «искать по тегу #theme-component», возникнут две проблемы.
С одной стороны, флажок нужно нажимать дважды, чтобы он действительно установился. С другой стороны, после одного или двух нажатий на флажок результаты поиска отсутствуют, хотя при использовании поиска на рабочем столе их много.

Поиск на мобильном устройстве без нажатия на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=true

Поиск на мобильном устройстве и однократное нажатие на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false

Поиск на мобильном устройстве и двукратное нажатие на флажок


https://meta.discourse.org/search?context=tag&context_id=theme-component&q=Topic&skip_context=false

Поиск в режиме рабочего стола


https://meta.discourse.org/search?q=topic%20%23theme-component

Я знаю, что могу ввести #theme-component в строку поиска, чтобы получить результаты на мобильном устройстве, но, на мой взгляд, идея предоставления флажка заключается в другом.

3 лайка

Привет, отличная находка, @moin. Думаю, вы обнаружили две ошибки. :slight_smile:

  1. Флажок не срабатывает сразу, и
  2. Ограничение поиска тегом создаёт маршрут, который Discourse обрабатывает с ошибкой 403

Флажок не устанавливается

В мобильной версии ссылка поиска добавляет параметр «context» в URL, что позволяет увидеть соответствующий переключатель. В данном случае URL, который мы рассматриваем, выглядит так: https://meta.discourse.org/search?context=tag&context_id=theme-component&skip_context=true.

При переключении флажка мы изменяем поисковый запрос: параметр skip_context меняется с true на false и обратно. Это также означает, что можно сформировать URL, где флажок изначально установлен, например: https://meta.discourse.org/search?context=category&context_id=1&skip_context=false. Это важно, так как я заметил разное поведение при загрузке в этих двух состояниях.

skip_context=true

Это состояние по умолчанию в мобильном режиме: флажок не установлен. При взаимодействии с флажком (через касание или клавиатуру) URL меняется на skip_context=false, но сам флажок не устанавливается. Чтобы его активировать, нужно кликнуть ещё раз; при этом в URL останется значение «false».

После этого флажок можно переключать туда-сюда, и URL будет меняться соответствующим образом, как и ожидалось.

skip_context=false

При загрузке поиска флажок уже установлен, и взаимодействие с ним работает как положено: каждое действие меняет состояние флажка и значение в URL.


Отдельно я заметил, что использование этих флажков приводит к потере фокуса на странице, независимо от значения skip_context; надеюсь, это связано с той же проблемой, что и наш случай с двойным кликом. :slight_smile:

Я воспроизвёл это поведение в безопасном режиме и на мобильных устройствах.

Хорошо, в следующем ответе я постараюсь объяснить, почему теги не применяются к области поиска, чтобы при необходимости это было проще выделить в отдельную тему.

4 лайка

Область видимости тегов в поиске возвращает 403

Этот случай меня сбил с толку, потому что, пытаясь воспроизвести проблему вне meta, я случайно загрузил категорию вместо тега в контексте поиска. Это оказалось к счастью, так как, осознав свою ошибку, я по крайней мере понял, как формируются поисковые запросы для таких контекстов.

Используя в качестве примеров #theme и #theme-component:

Когда мы используем контекст поиска для тегов, наш запрос выглядит так: https://meta.discourse.org/search?q=topic&page=1&search_context[type]=tag&search_context[id]=theme-component, который возвращает ошибку 403.

Когда мы используем контекст поиска для категорий, наш запрос выглядит так: https://meta.discourse.org/search?q=topic&page=1&search_context[type]=category&search_context[id]=61, который возвращает результаты, как и ожидалось.

Альтернативно, если мы выберем тег в расширенных фильтрах поиска, наш запрос будет выглядеть так: https://meta.discourse.org/search?q=tags:theme-component&page=1, и он вернет результаты с этим тегом.

Мне удалось воспроизвести возврат 403 для пути &search_context[type]=tag&search_context[id]=theme-component также в режиме safe-mode.

Существуют ли другие типы search_context? Я бегло просмотрел код, но не смог определить; если они есть, мы можем протестировать их тоже.

3 лайка

Продолжение обсуждения из Подписки Discourse — возможность подписки на определённый срок:

Я собирался перейти к постам, которые я создал с тегом «подписки», поэтому перешёл на страницу списка тегов и поискал оттуда. Результатов нет — см. ниже. Когда я ищу со главной страницы, всё работает нормально. Возможно, проблема в флажке, так как это отличие.

1 лайк

Могу это подтвердить. Только что попробовал поиск по тегу post-voting с отмеченной опцией, и он не нашёл никаких результатов (@упоминание или другое обычное ключевое слово).

Android/Chrome

(на рабочем столе пока не проверял) Проверил на рабочем столе, и там всё работает нормально.

Это одна из проблем, о которых я сообщал здесь?

2 лайка

У меня не возникло проблем с отметкой галочки, но отсутствие результатов, похоже, та же самая проблема.

Я объединил темы. :+1: (и немного отредактировал первое сообщение).

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

Мой очень простой пошаговый алгоритм:

  • На мобильном устройстве перейдите к списку тем post-voting
  • Откройте поиск и установите флажок Search the #post_voting tag
  • Введите что-то, что точно должно дать результат (например, ‘comment’ или ‘@JammyDodger’)
  • Нажмите ‘Search’

Результат: ‘Ничего не найдено

Ожидаемый результат: Система находит нужные мне вещи

2 лайка

Это действительно ошибка, спасибо за отчет, друзья. Она должна быть исправлена после слияния этого PR: FIX: Search by tag context was broken by pmusaraj · Pull Request #23006 · discourse/discourse · GitHub

2 лайка

Теперь это объединено :partying_face:

3 лайка

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.