Поиск / отчет по полю пользователя

Несколько пользователей нашего сообщества просили добавить пользовательское поле профиля для имён пользователей в Fediverse. Это легко сделать.

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

Но… он не находит все совпадения. У нас есть как минимум ещё трое пользователей (включая меня), которые ввели «mastodon» в это пользовательское поле. Неужели есть какая-то задержка индексации?

Кроме того, я искал способ запустить поиск или запрос, чтобы получить список всех пользователей, которые ввели какое-либо значение в это поле (например, показать всех пользователей с именем пользователя в Fediverse). Это задача для кастомного запроса? Как это сделать?

Это можно сделать с помощью плагина Data Explorer, используя SQL-запрос, например:

SELECT ucf.user_id,
       ucf.value,
       ucf.updated_at AS reltime$time
FROM user_custom_fields ucf
WHERE ucf.name = 'user_field_1'
AND ucf.value IS NOT NULL
ORDER BY ucf.updated_at DESC

Здесь 'user_field_1' — это имя пользовательского поля пользователя на вашем сайте, которое вы хотите просмотреть. Обратите внимание, что в таблице user_custom_fields Discourse использует имена user_field_1, user_field_2, user_field_3 и т. д. вместо текстовых названий полей на странице Настройка → Поля пользователя.

Если вы хотите, вы можете получить список всех имен пользовательских полей пользователя на вашем сайте и их соответствующих номеров user_field с помощью:

SELECT uf.id, uf.name
FROM user_fields uf

Здесь ID поля пользователя будет именем user_field_X в таблице user_custom_fields.

С учётом этого, я не понимаю, почему вы не можете искать по полям пользователей в окне поиска, если поле пользователя доступно для поиска.

Попробуйте использовать расширенное меню поиска, выбрать «Пользователи» в качестве места для поиска и посмотрите, получите ли вы те же результаты:

Спасибо, Алекс, плагин Data Explorer сработал великолепно (я использую его впервые).

Поиск по разделу «Пользователи» вообще не работает. Значения здесь — это имена пользователей в fediverse, и мой ввод выглядит так:

  @cogdog@mastodon.social

Но при поиске по строке «mastodon» в разделе «Пользователи» результатов нет. Не поддерживает ли он частичное совпадение строк? Это не критично, и я, скорее всего, отключу флаг поиска для этого поля. Я надеялся предоставить пользователям способ увидеть всех, кто заполнил это поле. Есть ли в общем поиске опция для нахождения записей, которые не пусты?