• Как организовать архитектуру для подписки по ключевым словам (как пример, Avito)?

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

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Думаю логично для подписок использовать модель pubsub в любой реализации.
    И соответственно делать рассылку сразу после создания каждого объявления.
    Точнее добавлять объявления в некий пул для рассылки, и как только наберется N количество, отправлять рассылку.

    1. Создается объявление
    2. Попадает в очередь для парсинга
    3. Парсер вычленяет из объявления ключевые слова по базе подписок.
    4. Если ключевые слова находятся, то объявление отправляется в соответствующие каналы(пулы) для рассылки
    5. После того как пул набирает N количество объявлений - делается рассылка.


    В итоге должно получиться что-то вроде того что нужно.

    "Продам гараж в Москве, белый"
    Парсер нашел: москва, белый гараж
    Объявление попало в каналы: москва, белый гараж.
    И после того как наберутся остальные объявления либо когда пройдёт N времени, очередь рассылается подписчикам этих двух каналов и очищается.
    Ответ написан
    7 комментариев