Поиск
NOTE
Статус: Target service boundary. Документ описывает целевую сервисную границу. Код либо полностью отсутствует, либо существует только как scaffold — смотрите секцию «Статус документа» ниже для точного указания на код. Правила маркировки — в
50-processes/documentation-standard.md.
Этот README описывает целевую сервисную границу search. Читайте его, когда нужно понять, как система находит canonical products и аналоги, не блокируясь на ожидании свежих данных.
Назначение
Сервис поиска canonical products и offer-кандидатов поверх Elasticsearch и бизнес-логики ранжирования, аналогов и visibility filtering.
Статус документа
- Тип знания:
target service boundary - Статус реализации: отдельный runtime и код сервиса пока отсутствуют
- Текущее место кода: отдельной реализации поиска в репозитории нет; текущий backend ограничен минимальным API-scaffold
- Что читать дальше:
../../10-business/contexts/search.md,../visibility/README.md,../../20-architecture/adr/0014-graceful-degradation-without-warmup.md
Область действия
Входит:
- Свободный текстовый поиск и фасеты.
- Подбор аналогов по 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 var | Default | Описание |
|---|---|---|
SEARCH_ELASTICSEARCH_URL | — | endpoint Elasticsearch |
SEARCH_RESULT_LIMIT_DEFAULT | 20 | лимит выдачи |
SEARCH_LOG_LEVEL | info | уровень логирования |
Локальный запуск
Выделенного процесса 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-фильтра.