Добавить синонимы поиска

В последнее время я много читаю здесь и заметил, что термины «пост» и «ответ» используются как-то взаимозаменяемо.

Если это исправить, то это приведёт к меньшему количеству досадных вопросов, когда кто-то использует неправильный из двух терминов при поиске перед тем, как задать вопрос с новой темой (LOL, это только что произошло со мной: «удалить пост после» не дало тех же результатов, что и «удалить ответ после»…)

Отсюда и мой вопрос в этой теме…

1 лайк

Ответ и публикация не являются на 100% взаимозаменяемыми. В большинстве случаев, которые мы видим здесь на Meta, они таковыми являются, но не всегда.

Я предлагаю ознакомиться со статьей Understanding Discourse for new users, где описывается, что такое публикация. Ответом считается любая публикация, кроме первого сообщения темы.

5 лайков

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

Разве те, кто лучше осведомлён, не смогут всё равно выполнить явный поиск, используя кавычки вокруг интересующего их термина, например “reply” :question:

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

Итак, я прочитал «Руководство для новых пользователей Discourse», но не смог найти там явного определения термина «ответ».

Однако, поскольку я процитировал вас выше, «ответ» по определению является «постом». Следовательно, при поиске по слову «пост» должны отображаться и все совпадения с «ответом»…

Также после прочтения этого руководства остаётся неясным, должен ли поиск по слову «ответ» выдавать все записи «постов».

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

Ответ действительно является постом, но не все посты являются ответами, поэтому поиск по слову «пост» не должен автоматически добавлять поисковый термин «ответ».

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

3 лайка

Но вы, очевидно, «в курсе» и, скорее всего, просто использовали бы явный поисковый запрос, не беспокоя здесь людей новой темой о том, почему так много результатов поиска по слову «post» появляются в ваших поисках по слову «reply».

Независимо от семантики публикации/ответа — добавление синонимов в поиск на данный момент не может быть настроено в Discourse.

9 лайков

Ладно, я замолкаю :wink: но, возможно, стоит добавить возможность их добавления. Я предсказываю, что это облегчит жизнь добрым людям, отвечающим новичкам на этом замечательном форуме :slight_smile:

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

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

1 лайк

Я пере归类рую это как #feature, так как запрос на функцию мне вполне понятен. Он заключается в том, чтобы предоставить в UX место для определения пользовательских синонимов.

Postgres технически поддерживает синонимы, согласно:

Так что, если вы захотите погрузиться в технические детали и сделать всё максимально продвинуто, вы можете реализовать это уже сегодня. Однако я согласен, что в будущем добавление UI, позволяющего модераторам определять это, может быть интересным.

Я не ставлю метку pr-welcome, так как задача сложная, её правильная реализация займёт много времени, а потенциальная польза может быть ограниченной.

Что касается сроков, то я не ожидаю, что смогу заняться этим в следующем году; скорее всего, это произойдёт в течение следующих 5 лет.

9 лайков

Поздравляем, Дэйл! :partying_face:

image

1 лайк

Мы обновили нашу терминологию (термин «User» заменён на «Member») и соответствующим образом обновили документацию. Однако я хотел бы, чтобы при поиске по слову «User» автоматически отображались результаты, содержащие слово «Member». Есть ли какие-то идеи относительно простого способа этого добиться?

CC: @michellefs

Это довольно сложная задача. Мы могли бы создать плагин, который добавляет синонимы в проиндексированные данные, однако это займет от 1 до 5 дней работы.

Главный вопрос здесь: насколько это важно для вас? Реализовать это возможно, но потребуется наше индивидуальное консультирование.

1 лайк

Я ничего не знаю, но разве это не просто вопрос изменения текста со стороны настройки? Или я, как обычно, всё неправильно понимаю?

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

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

Интересно, изменились ли взгляды на опечатки за эти годы:

В Discourse-AI мы начали экспериментировать с семантическим поиском. Это всё ещё ранняя стадия, и мы продолжаем изучать эти системы.

Использование больших языковых моделей (LLM) для улучшения поискового запроса также является возможным (хотя сегодня и медленным) подходом:

Эта техника описана здесь: GitHub - texttron/hyde: HyDE: Precise Zero-Shot Dense Retrieval without Relevance Labels · GitHub


Помимо полностью автоматизированных подходов

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

Для этой функции уже есть прецедент в Postgres, см.: PostgreSQL: Documentation: 18: 12.6. Dictionaries

Другая область, которую я готов исследовать (хотя я лишь слегка заинтересован в этом) — это возможность скрытого места «метаданные» в постах, где администраторы могут добавлять поисковые термины. Это очень незаметно, и в целом я рекомендую просто «правильно» добавлять слова в текст, чтобы они не были скрыты, например:

SEO

семантический, связанный, улучшение

2 лайка

Шокированный Космо Краймер GIF

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

К тому же это требует минимальных изменений в нашей текущей настройке, так как нужно лишь добавить небольшой шаг «обогащения» поискового запроса :exploding_head:


По этой теме мы также можем реализовать гибридный поиск:

  • Поиск с использованием существующего полнотекстового поиска в PostgreSQL
  • Поиск с использованием векторных вложений
  • Сборка лучших 50 результатов из обоих методов
  • Передача результатов в сервис повторного ранжирования поиска
  • Отображение повторно ранжированных результатов

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

Пример здесь:

https://github.com/pgvector/pgvector-python/blob/master/examples/hybrid_search.py#L67-L70

6 лайков