Услуга · 07

Скоринг, поиск и пайплайны, которые структурируют ваши данные

Превращаем сырые, хаотичные источники в структурированные данные, по которым ваш продукт может ранжировать, искать и подбирать. Это движки скоринга, персонализирующие выдачу под каждого пользователя, мгновенный полнотекстовый и гео-поиск и пайплайны загрузки, которые чистят и дедуплицируют внешние данные до состояния, которому можно доверять, — на PostgreSQL, без отдельного поискового сервиса, который нужно содержать и оплачивать.

PostgreSQLpgvectorpg_trgmSupercluster
Как мы это реализуем

Инженерия — простыми словами.

01

Логика живёт в SQL

Скоринг, классификация и определение категорий работают как детерминированный SQL по вычисляемым колонкам — быстро, проверяемо и объяснимо, без затрат на LLM и догадок. Один и тот же запрос даёт один и тот же результат каждый раз.

02

Поиск внутри Postgres

Полнотекстовый и нечёткий поиск используют pg_trgm и unaccent — опечатки и диакритика всё равно находятся, а поиск остаётся в вашей базе, без отдельного кластера Elasticsearch, который надо содержать и синхронизировать.

03

Режимы скоринга под пользователя

Ранжирование параметризовано профилем и режимом пользователя — один и тот же каталог перестраивается под каждого: строго или мягко, ближе или релевантнее — за счёт пересчёта весов на момент запроса, а не зашитого порядка.

04

Поиск по карте, который масштабируется

Гео-запросы используют расстояние по гаверсинусам для поиска рядом и Supercluster для кластеризации — тысячи пинов остаются плавными на карте, и нужные результаты всплывают, пока пользователь двигает и масштабирует.

Как проходит работа

От старта до запуска.

  1. 1

    Описываем источники

    Инвентаризируем сырые входы — фиды, скрейпы, экспорты — и определяем чистую структуру, которая реально нужна продукту для ранжирования и поиска.

  2. 2

    Строим пайплайн

    Пишем загрузку, которая парсит, нормализует, дедуплицирует и обогащает каждый источник, с валидацией, которая отсекает или помечает плохие записи, а не засоряет каталог.

  3. 3

    Добавляем скоринг и поиск

    Добавляем движок скоринга, полнотекстовый и гео-поиск и настраиваем релевантность на реальных запросах и реальных данных, а не на синтетике.

  4. 4

    Проверяем и выпускаем

    Тестируем ранжирование и загрузку на известных входах, замеряем производительность запросов на реальном объёме и выкатываем с индексами и задачами перегрузки данных.

Что вы получите

Что на выходе и когда это подходит.

Результаты

  • Пайплайн загрузки, превращающий сырые внешние источники в чистые структурированные записи без дублей
  • Движок скоринга/ранжирования с персонализацией под пользователя или режим, реализованный в SQL
  • Полнотекстовый и нечёткий поиск с устойчивостью к опечаткам и диакритике плюс фильтры, быстрые на объёме
  • Гео-поиск: запросы расстояния и кластеризация на карте, готовые к тысячам точек
  • Индексы, вычисляемые колонки и задачи перегрузки, задокументированные так, что система остаётся быстрой по мере роста данных
  • Тесты, покрывающие логику ранжирования и корректность пайплайна на известных входах

Подходит, когда

  • Вы агрегируете данные из множества внешних источников, и они нужны чистыми, без дублей и доступными для запросов
  • Вам нужно персонализированное ранжирование или скоринг без затрат и непредсказуемости LLM
  • Вам нужен быстрый полнотекстовый или картографический поиск, но не хочется содержать отдельный поисковый кластер
  • Ваш каталог перерос наивную фильтрацию, и поиск стал медленным или нерелевантным
Доказательство — выпущено, а не слайды

Выпустили пайплайн, который из ~1 500 сырых объявлений сделал ~1 200 чистых записей без дублей, с кластеризацией на карте и поиском рядом, и отдельный движок скоринга, персонализирующий рекомендации полностью в SQL.

Хотите так же для своего продукта?

Расскажите о цели — честно оценим объём.

Начать проект