Могу ли я исключить имена пользователей из поиска

Есть ли способ исключить посты конкретного пользователя из результатов поиска? В настоящее время, если очень активный пользователь имеет имя, начинающееся с популярного термина сообщества или содержащее его, например:

Термин поиска: ‘ABCD’
Имя пользователя: ‘ABCDAndUser…’

…поиск этого термина часто выводит список постов этого пользователя, до такой степени, что практически невозможно отличить его случайные посты от тематических, в которых этот пользователь просто участвует в обсуждении. В идеале большинство участников хотели бы видеть список тематических постов, а не посты, где упоминается только этот пользователь, хотя сам термин в них не используется.

Редактирование: На данный момент мне не известно никаких обходных путей, кроме изменения имени пользователя и/или блокировки этого пользователя другими участниками при проведении поиска. Ни один из этих вариантов не является идеальным.

3 лайка

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

2 лайка

Ах, хороший момент. При ближайшем рассмотрении это посты, у которых есть ответы, буквально содержащие их имя пользователя.

2 лайка

Действительно, похоже, что здесь возможны некоторые улучшения — не кажется правильным, что имя может «захватывать» поиск таким образом, и вполне вероятно, что пользователи могут выбирать имена, связанные с темой конкретного форума.

Я не знаю, насколько сложно это реализовать «под капотом», но, возможно, стоит скрывать имена пользователей, если нет символа @.

2 лайка

Это одна из причин, по которой существуют зарезервированные имена пользователей.

По умолчанию Discourse блокирует следующие:

Никому не нужен пользователь с именем discourse, который мог бы запутать обсуждение.

Сообщества могут обновить этот список, добавив любые термины, специфичные для их обсуждения.

3 лайка

Я не думаю, что это лучшее решение для этой проблемы. Например, на автомобильном форуме кто-то может выбрать имя пользователя, в котором заявляет о владении или любви к определённой модели автомобиля. Вы действительно хотите запретить такую возможность — или поддерживать список?

Кроме того, однажды мне пришлось задать вопрос в службу поддержки AT&T, и я не смог использовать имя «Мэтью». Хотите угадать, почему?

2 лайка

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

Я точно знаю, что у нас есть участники, использующие, например, имя ‘testuser’. То есть это решение сработает только в том случае, если мы будем использовать подстановочные знаки для массового блокирования имен пользователей, верно? Это, похоже, легко может стать чрезмерно обременительным для множества сокращений (в данном конкретном случае речь шла о тикере ETF в финансовом сообществе).

1 лайк

Также с практической точки зрения ограничение на имена пользователей плохо совместимо с SSO. Если SSO не обеспечивает соблюдение того же ограничения и пользователь по незнанию выбирает «запрещённое» имя, Discourse назначит ему случайное длинное имя, похожее на UUID.

1 лайк

В качестве конкретного примера, полагаю:

  1. Пользователь назвал себя msft_2000.
  2. Теперь, когда кто-то пишет «Что говорит @msft_2000» или «что говорит msft_2000», это появляется в результатах поиска.

Честно говоря, я не уверен, как лучше поступить. Вероятно, стоит подойти к этому с обратной стороны:

  • Специальный плагин, который преобразует MSFT в «магический блок с дополнительной информацией о MSFT».
  • Парсинг поисковых запросов на наличие известных тикеров акций и преобразование самого поискового запроса.

Это, безусловно, будет очень сложно и затратно. Единственное простое решение, которое я могу придумать, — переименование пользователей.

1 лайк

Есть ли какая-то конкретная причина, по которой Discourse не использует знак минуса Google для исключения из поиска результатов, содержащих определённый термин (в данном случае — имя пользователя как термин для исключения)? Мне кажется, что если бы такая функция существовала, это было бы самым простым решением.

Извините, мне нужно, чтобы этот разговор был привязан к реальности.

Вы говорите, что хотели бы выполнить поиск по запросу:

msft -msft_user

Технически это возможно в нашем текущем индексе, но для реализации потребуется значительная работа. Особенно учитывая, что msft_user разбивается на два токена (msft / user), поэтому нам придется использовать синтаксис «идет после». Я вижу смысл в внедрении оператора -, но это непростое изменение.

3 лайка

Да, извините, если это получилось слишком затянутым. Это, конечно, не было моей целью.

Я подумал, что стоит спросить, так как один из наших участников поднял эту тему, и это кажется уместным изменением, учитывая, что ваша команда как раз недавно работала над улучшением поиска.

Это отвечает на вопрос. :+1:

2 лайка

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

Это не тривиальное изменение, но и не огромная работа; главное в этом изменении то, что оно немного кропотливое.

Я помечаю это, и в следующем раунде работы по поиску мы сможем вернуться к этому!

Огромное спасибо за поднятие этого вопроса.

7 лайков

Разве это не тоже отличный пример использования тегов?

Однако исключение тегов поддерживается:

-tags:bug+feature: исключение тем с тегами bug и feature
-tags:bug,feature: исключение тем с тегами bug или feature

5 лайков