1. Выделить из запроса сущности (имена существительные): можно использовать
это
2. Проверить по заранее подготовленному словарю синонимов и унифицировать всё, что имеет неточности и является синонимом.
3. Делаем привязку тегов текущего объявления к ОБЩЕМУ списку тегов объявлений всей системы.
4. Под объявлением отображаем только 5-6 тэгов, с максимальным количеством объявлений внутри каждого тега (кол-ва привязанных объявлений к этому тегу) по всей системе.
5. В очередь пользователя для отправки - помещаем ID объявлений по его подписке: тэги и т.д.
6. Как только пул новых объявлений превышает пороговое значение - делаем рассылку. Например, каждые 30 новых из общей очереди пользователя:
if($newItemsForUser>=30) {
/*
команда запроса инициализации рассылки
например, команда через API микросервису
*/
}