Поиск пользователей возвращает максимум 20 пользователей

При поиске пользователей по значениям настраиваемого поля «Искомые пользователи» возвращается максимум 20 результатов, хотя, как я знаю из запросов в консоли Rails, их около 200.

Я подумал, что это может быть связано с «скрытой» настройкой сайта DISCOURSE_RATE_LIMIT_SEARCH_USER ([‘hidden’ site setting]), которую я изменил на 50. Хотя эта переменная окружения была распознана и появилась в итоговом блоке вывода команды ./launcher rebuild app, изменений не произошло. Я предполагаю, что эта настройка больше относится к ограничению частоты запросов, чем к количеству возвращаемых результатов поиска (хотя, просматривая Meta и исходный код Discourse, я не нашел никакой документации по этой настройке).

Является ли этот лимит в 20 внутренних ограничением Discourse? Есть ли способ его изменить?

6 лайков

Я могу воспроизвести это с помощью имени пользователя. Например, https://meta.discourse.org/u?name=M возвращает только 20 пользователей. Но я ожидал, что в Meta будет больше пользователей, начинающихся на «M».

4 лайка

Спасибо @Moin за пример воспроизведения.

Можно ли что-то сделать с этим ограничением в 20 пользователей при поиске? Команда форума, которая подняла этот вопрос, хочет использовать поиск для нахождения других людей с похожими исследовательскими интересами. В настоящее время это, казалось бы, произвольное ограничение делает поиск мало полезным для этой цели.

Это ограничение в 20 должно быть где-то настройкой, верно?

2 лайка

Есть ли какие-либо обновления по этой ошибке от команды Discourse? Было бы здорово узнать, будет ли она исправлена, так как она была воспроизведена здесь на Meta.

И знает ли кто-нибудь, что делает «скрытая» настройка сайта DISCOURSE_RATE_LIMIT_SEARCH_USER? Насколько я могу судить, она нигде не задокументирована, но, возможно, имеет отношение к этой проблеме.

1 лайк

Это скорее запрос на новую функцию, чем баг. Вы хотите, чтобы мы реализовали пагинацию здесь.
Лимит запросов не связан с количеством результатов; он предназначен для предотвращения спама в поисковый эндпоинт.

2 лайка

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

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

Да, я понимал, что ограничение частоты запросов отличается от количества результатов, но это было единственное Setting, которое я мог найти где-либо, что, казалось, могло иметь какое-либо отношение к этому.

2 лайка

Однако это не так уж сложно представить. Реализация пагинации как на бэкенде, так и на фронтенде требует значительных усилий. Если предоставление такой функции никогда не запрашивалось, то приоритет отдаётся другим задачам. Отдельно взятые вещи могут быть простыми, но когда у вас тысячи дел, приходится делать выбор.

2 лайка

Мы планируем улучшить как общий поиск, так и поиск по каталогу, чтобы возвращать все результаты вместо ограничения первыми 20 результатами. Однако на данный момент я не знаю, когда мы завершим эту работу, поэтому оставлю эту тему открытой, чтобы понять, является ли это более распространённой проблемой, требующей более срочного приоритета.

3 лайка