ФорумПрограммированиеОбщие вопросы программирования → User saved filters

User saved filters

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 января 2016 г. 0:43

    Хейлоу профэ.

    Дано: есть дохуя всяких листингов и их надо отфильтровать по каким то параметрам. Листинги конечно пополняются со временем.

    Нужно: реализовать функционал типа user saved filters с возможностью получения найденого через RSS и например по почте раз в денб/час/неделю/никогда.

    Ну и возможность конечно удалить фильтр либо редактировать.

    Вот думаю как лучше такое реализовать. Никто не сталкивался? Расчетно - вполне может оказаться так что активных в сутки фильтров будет под 100к например. Один человек использует 5-8 штук (обычно через rss).

    Спустя 16 сек.

    Это то что называется email alerts типа.

    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 25 января 2016 г. 10:57, спустя 10 часов 14 минут 3 секунды

    А в чем собственно загвоздка, за раз надо обрабатывать все 100к?
    Первым что приходит на ум -- сериализовать каждый набор фильтров и сохранять в базу с привязкой к пользователю, ну и в нужный момент распаковывать и делать по ним выборку.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 января 2016 г. 11:05, спустя 7 минут 32 секунды

    А в чем собственно загвоздка, за раз надо обрабатывать все 100к?

    @Crank, да, когда новый листинг добавляется надо сгенерировать новые данные и разослать уведомления и тп

    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 25 января 2016 г. 11:16, спустя 11 минут 26 секунд

    @phpdude, а как часто добавляются новые листинги?

  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 25 января 2016 г. 11:18, спустя 1 минуту 27 секунд

    что такое "листинг"?

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 января 2016 г. 11:23, спустя 5 минут 20 секунд

    что такое "листинг"?

    @kostyl, объявление

    Спустя 17 сек.

    @phpdude, а как часто добавляются новые листинги?

    @Crank, за минуту может быть пара десятков (а то и сотен). Система - агрегатор.

    Спустя 226 сек.

    в этом и прикол - агрегировать инфу с 10-15 площадок, и предоставлять к ней удобный быстрый доступ.

    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 25 января 2016 г. 12:17, спустя 53 минуты 36 секунд

    @phpdude, тут вся загвоздка в том на сколько навороченная система фильтров.

    Есть 2 с половиной пути:
    1. Делаешь хитровыебанную систему хранения фильтров с таблицами типа filter (pk, user_id, filter_name), filter_conditions (pk, filter_pk, condition_name, condition_type, value)
    2. Вариант когда ты хранишь в базе булевое выражение для фильтра для которого делаешь eval, типа такого

     
    if($arFilter['category']['value'] == 'auto' && ($arFilter['price']['value']['from'] < 10000 && $arFilter['price']['value']['to'] <= 1000000)) { 
    return true; 
    } else { 
    return false; 
    } 
    1. Вариант комбинирование 1 и для большей скорости добавление какого ни будь фасетного поиска на sphinx.

    Спустя 187 сек.

    Пыха не любит ПХП и после кода все пошло по пизде

     
    if($arFilter['category']['value'] == 'auto' && ($arFilter['price']['value']['from'] < 10000 && $arFilter['price']['value']['to'] <= 1000000)) { 
    return true; 
    } else { 
    return false; 
    } 

    Спустя 58 сек.

    думаю разберешься =)

  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 25 января 2016 г. 14:29, спустя 2 часа 12 минут 22 секунды

    Можно использовать каналы. Пользователь подписывается на определенный канал. И далее новость рассылается всем подписчикам данного канала (как в socket.io) или я плохо понял задачу

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 января 2016 г. 16:13, спустя 1 час 43 минуты 40 секунд

    Можно использовать каналы. Пользователь подписывается на определенный канал. И далее новость рассылается всем подписчикам данного канала (как в socket.io) или я плохо понял задачу

    @Ivan., каналы чуток не сгодятся, если я верно в голове это смоделировал

    Спустя 30 сек.

    @phpdude, тут вся загвоздка в том на сколько навороченная система фильтров.

    @Crank, штук 20-25 :)

    Спустя 10 сек.

    ладно, проект пока в голове на стадии обдумывания

    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 25 января 2016 г. 16:23, спустя 10 минут 36 секунд

    @phpdude,

    штук 20-25 :)

    @phpdude, это ты про что?

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 января 2016 г. 16:33, спустя 9 минут 40 секунд

    @Crank, количество условий по которым можно фильтровать. Ладно короче, буду делать и придумаю чо нить

    Сапожник без сапог
  • john2dark

    Сообщения: 99 Репутация: N Группа: Адекваты

    Spritz 9 мая 2016 г. 3:56, спустя 104 дня 11 часов 22 минуты

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

  • john2dark

    Сообщения: 99 Репутация: N Группа: Адекваты

    Spritz 9 мая 2016 г. 4:02, спустя 6 минут 30 секунд

    До конца этой штукой я еще не занимался (оставил на попозже), но вот по схеме если кратко, то будет что то типа такого:
    (что за хрень, не могу картинку вставить)

    Спустя 396 сек.

    Собственно в сеттингах два параметра определяющих откуда едет бродкаст, source и source_operation (второй - это специфика проекта).
    Source - это что то типа PROJECT_ADDED, SPAM_MESSAGE и т.д.
    Ну и в CRT'хе, в зависимости от флага is_subscribe будет отсылаться из этого источника алерт или нет.
    Технически можно избавиться от этого флага и принять что если тут ключи есть на этот сеттинг, то юзер подписан, ключей нет - значит не рассылать.
    Но я пока оставил флаг, потому как думал расширить чуть эту ЦРТху.

    Спустя 30 сек.

    то/не то?

  • john2dark

    Сообщения: 99 Репутация: N Группа: Адекваты

    Spritz 9 мая 2016 г. 15:41, спустя 11 часов 38 минут 31 секунду

    жесть какая, надо бы получше смотреть на дату публикации

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 9 мая 2016 г. 16:49, спустя 1 час 7 минут 50 секунд

    всё новое хорошо забытое старое)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!