Да, лучший способ добавить это — включить дополнительный раздел в оператор WHERE запроса, фильтруя по title темы.
Например:
WHERE archetype = 'private_message'
AND subtype = 'system_message'
AND created_at BETWEEN :start_date AND :end_date
AND title = 'Greetings!'
Найдёт все сообщения с заголовком Greetings!.
Обратите внимание, что некоторые системные сообщения не связаны с реальным пользователем, поэтому при таком типе запроса может потребоваться удалить строку AND user_id > 0.
Также, возможно, стоит убрать AND deleted_at IS NULL, чтобы учитывать приветственные сообщения, которые пользователи могли удалить.
Вы также можете использовать регулярные выражения (regex) для поиска тем с похожими заголовками.
Чтобы сопоставить тему по заголовку с помощью регулярного выражения в PostgreSQL, можно использовать оператор ~, который проверяет соответствие строки регулярному выражению. Структура запроса будет выглядеть так:
SELECT *
FROM topics
WHERE title ~ 'ВашШаблонRegexЗдесь'
Замените 'ВашШаблонRegexЗдесь' на фактический шаблон регулярного выражения, который вы хотите использовать для сопоставления поля title.
Например, если вы ищете темы, в заголовках которых содержится слово «Welcome» (без учёта регистра), можно использовать:
SELECT *
FROM topics
WHERE title ~* 'Welcome'
Оператор ~* используется для сопоставления без учёта регистра.