Обратная связь по эксперименту с мгновенным поиском

Недавно мы начали двухмесячный эксперимент по прототипированию нового опыта поиска в Discourse.

Попробуйте его здесь: https://meta.discourse.org/instant-search

:speaking_head: Если вы хотите обсудить свой опыт, не стесняйтесь записаться на звонок. Будем благодарны за любые отзывы :pray:

Возможности

  • Быстрый поиск

  • Возможность искать по темам, сообщениям, чатам и пользователям

    • Результаты поиска по сообщениям и темам включают личные сообщения (PM)
    • Результаты поиска по сообщениям чата включают приватные каналы и личные сообщения (DM)
  • Фильтры на основе интерфейса для тегов, категорий, пользователей, входящих, каналов и т. д.

  • Режимы поиска: по ключевым словам, семантический, гибридный и Hyde

Часто задаваемые вопросы (FAQ)

Поиск перестает работать через некоторое время на странице

Действительно, так и есть; пожалуйста, обновите страницу.

Не поддерживается наша грамматика поиска, например @user или #category

Действительно, не поддерживается, но это легко добавить, если мы решим выпустить эту функцию.

Разделение целей поиска по темам и сообщениям — странное решение

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

  • Я знаю, что эта тема существует, и хочу просто найти её (поиск по темам)
  • Я хочу найти любое упоминание этого запроса (поиск по сообщениям)

Качество результатов пока не на высоте

Мы едва коснулись того, что здесь возможно; на данный момент мы лишь приоритезируем категории и назначаем веса заголовкам и телу сообщений. Это потребует дальнейшей доработки, чтобы соответствовать уровню точности текущего поиска, но также открывает возможности для дальнейшего улучшения. К сожалению, многое контролируется через JS API, и используемая нами библиотека значительно ограничивала нас в этом.

Семантический / HyDE / гибридный поиск работает медленно

Мы увеличили задержку (debounce) для этих режимов, чтобы обойти некоторые неудобства, связанные с используемой нами JS-библиотекой. Если мы решим выпустить эту функцию, эта библиотека будет первой кандидатом на удаление. Что касается общей скорости, то она зависит от двух запросов: первый — для получения эмбеддингов, который выполняется на устаревшем оборудовании в AWS, что не помогает. Мы также могли бы внедрить эмбеддинги на уровне прокси-мидлвэра, чтобы сократить задержку. Опять же, ограничения времени эксперимента.

Технические детали

  • Этот эксперимент использует Typesense — открытый аналог Algolia. Он работает на экземпляре EC2 в том же месте, где и всё остальное на хостинге Meta.

  • Фронтенд не обращается к Typesense напрямую; вместо этого все вызовы проксируются через приложение Discourse с использованием Rack-мидлвэра.

  • Панель поиска, результаты и уточнения используют InstantSearchJS, обернутый в EmberJS. К сожалению, эта библиотека доставила много проблем, и мы не будем использовать её, если выпустим эту функцию.

  • Сервер использует 7,35 ГБ ОЗУ для индексации всего Meta. Имейте в виду, что большая часть этого объёма связана с эмбеддингами; без них потребление составило бы менее 2 ГБ.

18 лайков

Звучит отлично. Можешь разместить ссылку на него где-нибудь, например, в боковой панели?

6 лайков

Поскольку упоминается AWS, интересно, могли бы некоторые функции AWS Q стать быстрым и устойчивым способом улучшения поиска?

2 лайка

Выглядит отлично! С точки зрения скорости это просто потрясающе.

Похоже, что частичное совпадение слов в заголовке не работает.

Например, я ищу тему: Объекты типа для настройки темы.
Если я не добавлю ы к слову объект, тема не находится.

5 лайков

Опция ключевого слова работает в точном режиме; для более гибкого поиска можно попробовать семантический режим (ищет похожий смысл) или гибридный режим (сочетает оба подхода):

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

7 лайков

Я быстро попробовал и считаю, что это многообещающе. В последние дни я искал тему «Экспериментальная панель администратора» и тему «Восстановление резервных копий из командной строки». В первом случае поиск занял немного времени, чтобы найти результат, во втором — я в итоге обратился к своим закладкам. Но новый поиск находит обе темы и работает намного быстрее старого. Для меня это определённо улучшение :+1:

4 лайка

Интересно, не терпится изучить это подробнее! Выглядит многообещающе!

Неужели когда-нибудь это может полностью заменить функцию полного поиска? Кроме того, будет ли этот инструмент дополнением к текущему инструменту поиска в верхней панели инструментов?

3 лайка

Это так круто. Будет ли там опция автозаполнения для мобильных устройств, как в Elastic Search?

3 лайка

Спасибо, но это моя ошибка.
На самом деле я даже не заметил выпадающего списка, хотя в первом сообщении говорилось о режимах. :derp:

Теперь всё понятно :+1:.

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


Продвинутые динамические фильтры действительно впечатляют! Они будут очень полезны для быстрого уточнения поиска.

В целом, отличная работа, команда :clap:; я продолжу экспериментировать с этим.

5 лайков

Этот эксперимент был проведён для исследования возможности полной переработки нашего поиска и оценки компромиссов нового подхода. Пока рано делать выводы, но если новый опыт поиска будет встречен положительно, его можно будет рассмотреть для интеграции в Discourse многих функций поиска, будь то поиск по всей странице, поиск в заголовке, поиск похожих тем для раздела «Связанные темы», упоминания пользователей, автодополнение хештегов и т.д.

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

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

10 лайков

Отлично, что это быстро!

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

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

  • что такое Поиск? Что такое Фильтр?
  • как распознать каждый из них в интерфейсе и где их искать?
  • когда мне предоставляется простой/общий набор фильтров? Как получить доступ к полному набору или развернуть его?
3 лайка

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

3 лайка

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

  • Что не так с текущим поиском, что вы хотите изменить или улучшить?
  • Что, кроме скорости, мы оцениваем?
  • Если вы решите полностью перестроить поиск, есть ли возможность расширить поиск Discourse на другие источники контента? Например, на документацию, размещенную вне Discourse?
3 лайка

Вот несколько распространённых проблем за последние годы:

  1. Множество жалоб на то, что наш поиск не находит то, что ищут пользователи, особенно в случае использования
  1. Поиск в Discourse вообще не обрабатывает опечатки.

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

  3. Плохой пользовательский опыт при поиске в личных сообщениях.

4 лайка

:bangbang: У меня тоже длинный список, но я хотел убедиться, что подхожу с вопросами и пониманием, прежде чем начинать «гудеть» :joy:

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

В качестве стимула моя команда (по крайней мере внутри нашей команды) использует исключительно Discourse для общения. Это был первый запрос от одного из моих коллег сегодня:

Вот несколько идей, которые приходят в голову в первую очередь:

  • Улучшенный поиск по личным сообщениям (PM)
  • Поиск по чату
  • Возможность поиска (или расширения поиска) за пределами сайта была бы отличной. Многие сообщества не ограничиваются пределами Discourse.
  • Как вы уже отметили, поиск по точной строке иногда ведёт себя странно.
5 лайков

Мы серьёзно рассматривали этот вопрос, когда экспериментировали с готовым решением, например, Typesense. Это значительно упростило бы расширение нашего поиска на внешние «документы» — либо позволяя клиентам добавлять документы в нашу базу данных, либо позволяя фронтенду получать данные из других экземпляров, если они следуют определённым правилам совместимости.

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

3 лайка

На всякий случай: мы временно отключили этот эксперимент. Он должен скоро вернуться. :crossed_fingers: :slight_smile:

7 лайков

Оно вернулось :eyes:

4 лайка

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

  • Получить ваши общие качественные отзывы — что вам понравилось, что не понравилось, что бы вы изменили или хотели бы видеть в будущем
  • Сравнить этот опыт с текущим поиском
  • Наблюдать за тем, как вы используете новый поиск в действии

Мои личные сообщения открыты, если вы готовы пообщаться по звонку! Буду благодарен за любые отзывы :pray:

6 лайков

Ещё одна небольшая пауза :palm_tree: Скоро вернёмся. :slight_smile:

2 лайка