Как каждый автомобиль оказывается здесь.
Интернет говорит одно, рынок — другое. Публичные автомобильные объявления разбросаны по десятку площадок и десятку форматов, а один и тот же реальный автомобиль часто появляется сразу в трех местах. Индексатор AllCars.cy берет этот хаос и превращает его в одну чистую, очищенную от дублей, обогащенную и постоянно обновляемую ленту. Поэтому вы можете искать по всему рынку так, будто это один сайт.
Одна лента. Всегда свежая. Ничего не теряется.
Мы индексируем публичные объявления так же, как поисковая система индексирует открытый web. Каждое объявление сравнивается с остальными, очищается от дублей, дополняется характеристиками и налоговыми данными, которых нет в самом объявлении, и отслеживается во времени. История цены сохраняется даже тогда, когда объявление исчезает из интернета.
Ищите по всему рынку
Хватит прыгать между вкладками. Все публичные автомобильные объявления Кипра — в одной строке поиска, с одними фильтрами, одной оценкой и одним диапазоном справедливой цены. Неважно, где объявление было опубликовано изначально.
Всегда свежие данные
Рынок движется. Индексатор работает непрерывно, поэтому новые объявления, снижения цен и снятые публикации появляются в течение часов, а не недель. Вы видите рынок сейчас, а не снимок вторника трехнедельной давности.
Ничего не теряется
Каждое наблюдение записывается. Когда объявление исчезает, история не исчезает вместе с ним. Первая запрошенная цена, каждое снижение, срок до исчезновения — все сохраняется. Теперь у рынка есть память.
От сырого объявления до результата поиска — за восемь этапов.
Каждое объявление проходит через одни и те же восемь станций. Каждая станция — маленькая и точная идея, которая заслужила свое место, потому что ловит отдельный класс ошибок, когда-то болезненно попадавших в индекс.
Обнаружить
Находим новые публичные объявления по мере появления. Только то, что уже видно любому человеку с браузером. Без закрытых зон, приватных лент и входа в аккаунт.
Проверить
Отсекаем невозможные данные на входе. Годы из будущего, пробег в полмиллиона километров, названия городов вместо описаний — весь такой мусор ловится до попадания в индекс.
Нормализовать
Одна каноническая форма для марки, модели, типа кузова и топлива, несмотря на варианты написания, коды шасси и языковые особенности. «W211» и «E-Class» наконец считаются одним и тем же.
Разобрать
Достаем структурированные теги из свободных описаний. Пробег, спрятанный в предложении, тип топлива в середине абзаца, упоминания сервисной истории, слова про аварии. Поддерживаются английский, греческий, Greeklish, русский и Russlish.
Обогатить
Добавляем характеристики, которых нет в объявлении: мощность, крутящий момент, расход топлива, снаряженную массу, категорию дорожного налога Кипра — все из публичных автомобильных баз. Объявление становится записью об автомобиле.
Дедупликация
Три объявления об одном и том же реальном автомобиле? Одна запись об автомобиле, одна временная линия. Отпечатки изображений и spec match находят двойников. Жесткие правила запрета не дают склеить разные машины по ошибке.
Отслеживать
Append-only журнал наблюдений. Каждая увиденная цена, каждое изменение, каждое исчезновение сохраняются. Лента показывает сегодняшний день. История показывает весь сюжет.
Индексировать
Заранее считаем все, что нужно поиску: обогащение, оценка, теги, дорожный налог. Все попадает в горячий индекс. Теплые запросы возвращаются меньше чем за полсекунды. Ценовой движок тоже подключается здесь.
Обнаружение: только публичные объявления.
Индексатор ведет себя как вежливый читатель. Он смотрит те же публичные страницы, что и покупатель, в умеренном темпе и с нормальной гигиеной запросов. Без приватных аккаунтов, закрытых зон и сбора персональных данных.
На вход попадает ровно то, что уже есть в открытом web: публичное объявление. Марка, модель, год, пробег, цена, публичные фотографии и свободное описание от продавца. Это весь входной набор данных.
Все, что находится за входом в аккаунт, помечено как приватное или похоже на персональные контактные данные, остается нетронутым. Индекс отражает публичный рынок. Точка.
Отсекаем невозможные данные на входе.
Самый дешевый баг — тот, который вообще не попал в систему. Проверка идет раньше всего: регистрации из будущего, пробег с переполнением числа, цены ниже порога запчастей, описания из одного названия города, объявления о запчастях и аксессуарах, замаскированные под автомобили.
Все, что проходит этот шлюз, как минимум похоже на реальный автомобиль, а значит, следующим этапам не нужна защитная логика для очевидно сломанных случаев.
Одно каноническое имя на автомобиль.
Один и тот же автомобиль появляется под пятью разными именами: коды шасси в скобках, варианты бренда в четырех написаниях, дилерские сокращения, смесь языков. Без нормализации ищешь одну модель — и теряешь половину рынка.
Движок правил сводит каждый вариант к одной канонической идентичности по марке, модели, кузову и типу топлива. Поэтому один поиск по «E-Class» находит все варианты, а ценовой движок корректно сравнивает их между собой.
Добавляем данные, которых не было в объявлении.
Объявление сообщает только то, что продавец решил написать. В нем редко есть мощность, крутящий момент, расход топлива, снаряженная масса или будущий счет за дорожный налог в январе. Индексатор добавляет это из публичных автомобильных баз сразу после распознавания модели.
Калькулятор дорожного налога Кипра встроен: три эпохи регистрации, диапазоны CO₂, надбавки Euro. Для импорта из UK показываются две ставки, чтобы через три недели после покупки не было неприятного сюрприза.
Когда объявление выходит из этапа обогащение, это уже не просто объявление. Это полностью описанный автомобиль.
Один автомобиль — одна временная линия.
Один и тот же реальный автомобиль часто появляется сразу в трех объявлениях. Разные цены, разные фотографии, разные описания. Без дедупликации каждый поиск возвращает одну машину по пять раз, а график цены выглядит как шум.
Дедупликатор объединяет двойников по двум группам сигналов: отпечатки изображений (перцептивные хеши по публичным фотографиям, при этом исходные изображения не хранятся как персональные данные) и spec match (год + марка + модель + пробег + двигатель достаточно близки, чтобы считать это одной машиной).
Жесткие правила запрета останавливают ложные склейки. Если не совпадает кузов, топливо, год или цвет, объединение отклоняется, даже если все остальные сигналы кричат «match». Разные автомобили остаются разными автомобилями. Всегда.
Каждое наблюдение и каждое изменение сохраняются.
Слой жизненного цикла — это append-only журнал каждого наблюдения. Первая запрошенная цена, каждое следующее снижение, дни активности объявления, момент исчезновения. Ничего не перезаписывается. Ничего не забывается.
Когда объявление исчезает, это тоже сигнал. Машины, которые пропадают в течение 48 часов после снижения цены, вероятно, проданы. Машины, которые висят 90 дней, вероятно, нет. Ценовой движок читает этот поток, чтобы корректировать смещение выживших.
А покупатель получает полную историю цены, а не один снимок.
Предрассчитано. Горячо. Быстрее секунды.
Когда вы нажимаете «поиск», вы не хотите, чтобы движок начинал думать. Вы хотите ответ. Финальный этап материализует все (обогащение, оценка, теги, road tax, диапазон сделки) в горячий индекс, куда теплые запросы попадают за меньше чем полсекунды для типичных комбинаций фильтров.
Ценовой движок подключается здесь. Интерфейс просмотра подключается здесь. Уведомления по сохраненным поискам подключаются здесь. Один источник правды, много поверхностей.
Когда upstream-данные меняются, заново материализуется только затронутый срез. Инкрементально, а не ядерной перезагрузкой.
Что работает прямо сейчас.
Пайплайн — не побочный проект. Он работает непрерывно, инструментируется как инфраструктура, и каждая строка в нем заслужена через инциденты. Вот его масштаб в общих числах.
Публичный рынок, публичные данные, легкий след.
AllCars.cy индексирует публичный рынок. Мы относимся к источникам так, как относился бы внимательный читатель, и проводим жесткую границу вокруг персональных данных. Эти правила не декларация. Они встроены в сам индексатор.
Только публичные объявления
Все, что публично видно браузеру без входа, можно читать. Все, что за закрытой стеной, нельзя. Индексатор никогда не пытается получить доступ к приватным лентам, платному контенту или зонам, где нужна authentication.
Без персональных данных
Индекс хранит факты об автомобилях, а не о людях. Никаких персональных контактов, профилирования покупателей или продавцов, отслеживания людей по сети. Dataset описывает автомобили на публичном рынке.
Вежливый темп
Запуски обновления настроены так, чтобы быть небольшой долей обычного публичного трафика и уважать сигналы платформ. Индексатор — тихий читатель, а не load test.
Право на удаление
Запрос на удаление, скрытие из индекса или source-side opt-out быстро применяется к индексу, истории и результатам поиска. Этим занимаюсь только я, напишите мне в Telegram и запись исчезнет в тот же день.
Теперь ищите по всему рынку.
Одна лента. Всегда свежая. Без дублей, обогащенная, с оценками. Тратьте внимание на автомобили, а не на вкладки.