Skip to main content

Сортировка

Документ описывает базовые правила сортировки списков (событий и мест) в поиске приложения.

Эти правила применяются по умолчанию для всех поисковых выдач, если для конкретного сценария не определена специализированная логика сортировки.

Правила фильтрации (город, категории, цена и т.д.) описаны в разделе Фильтрация.


Область ответственности​

Данный документ определяет только порядок элементов в списке:

  • описывает, как сортируются уже отфильтрованные результаты;
  • не описывает правила фильтрации;
  • не описывает специализированные сценарии выдачи (страницы брендов, компаний, локаций и т.п.).

Исключения​

В приложении существуют сценарии, в которых применяются отдельные правила сортировки (например, при открытии страницы бренда или локации в другом городе).

Такие сценарии не входят в область ответственности данного документа и описываются в соответствующих разделах документации.


Термины и входные данные​

Основные сущности​

  • Родной город — город пользователя, указанный в профиле приложения.
  • Выбранный город — город, явно выбранный пользователем в интерфейсе поиска.
  • Геопозиция — координаты пользователя, полученные после разрешения на доступ к геолокации (опциональные данные).
  • Запрос — текст, введённый пользователем в поле поиска (например, «Театр»).
  • Тип — тип искомого объекта:
    • Событие
    • Место

Общие правила базовой сортировки​

Приоритет города​

Город определяется логикой фильтрации и используется как контекст для сортировки в следующем порядке:

  1. Выбранный город (если указан пользователем)
  2. Родной город пользователя

Роль геопозиции​

  • Геопозиция влияет только на сортировку.
  • Геопозиция никогда не изменяет город фильтрации.

Правила сортировки​

  • По расстоянию от пользователя — если геопозиция включена и поиск ведётся в родном городе.
  • От центра города — во всех остальных случаях.

Ограничение по удалённости​

Если пользователь находится дальше чем 50 км от родного города, геопозиция игнорируется для целей сортировки.


Сценарии базового поиска​

1. Поиск в родном городе​

Входные данные:

  • Запрос: Театр
  • Тип: Событие
  • Родной город: Москва

1.1 Геопозиция выключена​

Результат:

  • Сортировка: от центра города

1.2 Геопозиция включена​

Результат:

  • Сортировка: по расстоянию от пользователя

2. Поиск в другом городе​

Входные данные:

  • Запрос: Театр
  • Тип: Событие
  • Родной город: Москва
  • Выбранный город: Санкт-Петербург

2.1 Геопозиция выключена​

Результат:

  • Сортировка: от центра города

2.2 Геопозиция включена​

Результат:

  • Сортировка: от центра города

Геопозиция не используется, так как поиск ведётся не в родном городе.


3. Поиск в родном городе при удалённой геопозиции​

Входные данные:

  • Родной город: Москва
  • Геопозиция: включена
  • Расстояние до родного города: более 50 км

Результат:

  • Сортировка: от центра города

Диаграмма бизнес-логики сортировки​