Мне нужен API, который предоставляет похожие темы.
Мое требование: если у меня есть заголовок темы, я должен получать похожие темы.
Вы увидите, что при запросе JSON для темы в ней есть раздел под названием suggested_topics.
https://meta.discourse.org/t/144806/2.json:
Переход от заголовка к ID темы можно выполнить с помощью поиска:
Я думаю, вам следует использовать это, чтобы связанные статьи были взаимосвязаны. Переход от заголовка к идентификатору темы можно выполнить через поиск:
Это работает на meta.discourse, но не на моём форуме. Наш форум — forum.crio.do. Если я перехожу по ссылке forum.crio.do/t/8497/2.json, то результатов нет.
Похоже, это частное сообщество, поэтому неаутентифицированные запросы не вернут никаких данных. На Meta это работает с использованием https://meta.discourse.org/t/144806/2.json, поскольку контент доступен для публичного просмотра.
Дополнительную информацию об аутентификации ваших запросов с помощью api_key и api_username см. по ссылкам: Discourse REST API Documentation и Use the Discourse API ruby gem.
В этой конкретной теме всего один пост, поэтому поста 2 не существует.
Необходимо использовать https://forum.crio.do/t/8497/1.json
Вы всегда можете использовать t/<topic_id>/1.json
И действительно, вам нужно использовать API-ключ, так как у вас закрытое сообщество.
Будет ли это как-то работать для произвольного текста, передаваемого из внешнего источника? Иными словами, могу ли я использовать существующую функцию поиска по сходству для возврата списка потенциальных существующих тем на основе текста, переданного в API, а не на основе конкретной, уже существующей темы, которую нужно указать?
Извините, если вопрос глупый. Я не разработчик, но хочу собрать информацию перед разговором с кем-то по поводу функции, которую я планирую предложить. Идея заключается в том, чтобы связать, например, Intercom (хотя в данном случае альтернативу с открытым исходным кодом) с форумом Discourse, чтобы при вводе вопроса в чат-окно система могла искать потенциально подходящие темы на Discourse и предлагать их как возможные места для поиска ответов или направления вопросов. Аналогично тому, как Intercom уже может обращаться к базе знаний для предоставления потенциальных ответов.
Всё, что есть в Discourse, можно автоматизировать, поскольку Discourse — это JavaScript-приложение, а не традиционная «веб-страница». В данном случае вам нужно будет воспроизвести действия пользователя, выполняемые на странице расширенного поиска, следующим образом:
Да, я так и думал. То есть функционал «Похожие темы» в превью редактора — это просто обычный поиск, но с передачей содержимого темы пользователя в качестве критериев поиска?
В моём случае я бы передавал содержимое сообщения пользователя в обычную функцию поиска и возвращал X результатов в качестве возможных релевантных тем? (Терминология, которую я использую, может быть не совсем точной, мне просто нужно понять, верна ли сама идея
)
Используйте веб-инспектор, как подробно описано в этой теме, чтобы отслеживать происходящее при вводе текста в редакторе и вызове диалога с предложенными похожими темами.
Я считаю, что это существенно отличается от «обычного» поиска по сайту, так как поиск помечается как «дай мне всё, что соответствует любому из этих запросов, и используй частоту / множественные совпадения и т. д. для упорядочивания результатов».
Спасибо! Я провёл небольшое тестирование до вашего ответа и заметил, что результаты поиска и похожие темы немного различаются, что интересно. Тем не менее, этой информации должно быть достаточно, чтобы я мог обосновать выбор Discourse для группы, с которой я сейчас обсуждаю этот вопрос.

