Поиск

NOTE

Статус: Target service boundary. Документ описывает целевую сервисную границу. Код либо полностью отсутствует, либо существует только как scaffold — смотрите секцию «Статус документа» ниже для точного указания на код. Правила маркировки — в 50-processes/documentation-standard.md.

Этот README описывает целевую сервисную границу search. Читайте его, когда нужно понять, как система находит canonical products и аналоги, не блокируясь на ожидании свежих данных.

Назначение

Сервис поиска canonical products и offer-кандидатов поверх Elasticsearch и бизнес-логики ранжирования, аналогов и visibility filtering.

Статус документа

Область действия

Входит:

  • Свободный текстовый поиск и фасеты.
  • Подбор аналогов по Identity Profile.
  • Семантический/hybrid поиск.
  • Применение visibility policies.
  • Возврат freshness metadata и graceful degradation.

Не входит:

  • Индексирующий projection worker.
  • Pricing.
  • Выполнение enrichment jobs как runtime-задач.

Публичный контракт

Вход

  • HTTP: POST /v1/search, POST /v1/analogs, GET /v1/facets, GET /v1/explain/{id}.

Выход

  • Elasticsearch queries.
  • Вызовы в visibility service.
  • Постановка enrichment/discovery jobs в целевом состоянии.

Внутренняя архитектура

В целевом состоянии search сочетает query builder, ranking layer, visibility integration и freshness policy. Он должен уметь отвечать сразу и не зависеть от синхронного прогрева данных.

Зависимости

  • Elasticsearch.
  • Visibility.
  • PG/read models для дополнительных атрибутов и enrichment.

Хранилище

  • Основной runtime storage — Elasticsearch.
  • Дополнительные read-model и metadata — PostgreSQL.

Конфигурация

Env varDefaultОписание
SEARCH_ELASTICSEARCH_URLendpoint Elasticsearch
SEARCH_RESULT_LIMIT_DEFAULT20лимит выдачи
SEARCH_LOG_LEVELinfoуровень логирования

Локальный запуск

Выделенного процесса search в текущем репозитории нет.

Тестирование

  • Нужны unit-тесты query builder и ranking rules.
  • Нужны regression/golden tests на набор запросов.
  • Нужны integration-тесты на visibility filter и degrade semantics.

Наблюдаемость

В целевом состоянии нужны метрики latency, empty/partial result rate, visibility filtered count и discovery enqueue rate. Сейчас отдельной observability-поверхности нет.

Открытые вопросы / TODO

  • Собрать golden set запросов для CI.
  • Выбрать embedding-модель.
  • Замерить overhead visibility-фильтра.

Связанные документы