Когда пользователь открывает RuStore и вводит запрос вроде «тренировки дома» или «обои с кошками», он ищет не конкретное приложение, а способ решить задачу. Наша цель, как стора, — понять, какое приложение действительно поможет ему это сделать.
За этим стоит сложный ML-пайплайн: сначала модель отбирает кандидатов по смысловой близости запроса, затем ранжирует их по релевантности. А поисковые теги помогают системе уловить контекст — в каких ситуациях и по каким запросам ваше приложение должно оказаться в топе выдачи.
Меня зовут Анастасия Войцешко, я продакт-менеджер в RuStore. В этой статье расскажу, как устроен поиск внутри стора, какую роль теги играют и как подобрать их так, чтобы повысить шансы приложения попасть в релевантную выдачу.
Как устроен поиск в RuStore
Чтобы пользователь быстрее находил именно то, что ему нужно, поиск в RuStore работает в два этапа — retrieval и ranking. Первый отвечает за отбор кандидатов, второй — за их упорядочивание.
Retrieval
На этапе retrieval система формирует список приложений, которые по смыслу и тексту максимально близки к запросу. Например, при поиске «тренировки дома» в выборку попадут фитнес-приложения, трекеры активности и сервисы для йоги.
Retrieval начинается с нормализации запроса: он приводится к базовой форме, чтобы сравнивать не отдельные слова, а смысл. Базовая форма — это, например, когда слово «бегаю» или «бегал» приводится к общему корню «бег». Благодаря этому система понимает, что все варианты относятся к одной теме.
Далее включаются два независимых механизма:
Лексический поиск проходит по словам запроса через обратный индекс и находит карточки приложений, где эти слова встречаются. Под анализ попадает (название, описание и теги).
Семантический поиск строится на эмбеддингах — это такие числовые представления текста, которые отражают его смысл. Например, у слов «бег» и «тренировка» эмбеддинги будут близкими: система «понимает», что оба они относятся к спорту, хотя сами слова разные.
В RuStore эмбеддинги заранее вычисляются для карточек приложений на основе информации о приложении. Когда пользователь вводит запрос, для него создаётся собственный эмбеддинг, и далее он сравнивается с эмбеддингами из каталога приложений.
Результаты обоих подходов объединяются в общий пул кандидатов.
Ranking
На этапе ranking система решает, какие из найденных кандидатов окажутся выше в поисковой выдаче. За это отвечает модель ранжирования на деревьях решений, обученная специально под поисковую задачу. Она учитывает десятки факторов и взвешивает их так, чтобы наверху оказались не просто похожие, а действительно полезные приложения.
Главную роль здесь играют поведенческие сигналы. Мы смотрим, как пользователи взаимодействуют с приложениями: просматривают ли карточку, устанавливают ли приложение, оставляют ли оценки, просматривают ли скриншоты и т.п. Эти данные помогают понять, насколько приложение действительно интересно и полезно людям, а значит, отражают реальную релевантность выдачи.
Ни один из перечисленных сигналов не является решающим — итоговая позиция приложения складывается из их комбинации: модель балансирует между точным совпадением, смысловой близостью и реальной пользой для людей. При это если пользователи по похожим запросам регулярно выбирают конкретное приложение и ставят ему высокие оценки, это усиливает его позиции в выдаче.
Как это работает с тегами. На этапе retrieval теги помогают расширить пул кандидатов: они дают шанс приложению попасть в выборку даже без точных совпадений в тексте. Дальше модель ранжирования ориентируется на поведение пользователей: если приложение по этим тегам действительно скачивают, используют и оценивают положительно, оно постепенно поднимается в выдаче.
Поиск в сторе
При поиске в сторе среди пользователей есть два популярных паттерна поведения: чёткий поиск и нечёткий поиск.
Чёткий поиск
Чёткий поиск — это запросы, в которых пользователь точно знает, что ищет (поиск по точному названию приложения). Здесь основной сигнал для поиска очевиден: совпадение запроса по названию приложения или бренду продукта. В таких кейсах теги играют вспомогательную роль — они могут немного усилить выдачу по смежным запросам, но не являются ключевым фактором.
Нечёткий поиск
Запросы вроде «игры офлайн», «учить английский», «удаление фона с фото» являются нечётным поиском, описывая задачу, которую хочет решить пользователь. Именно в таких случаях модель начинает искать смысл, а теги работают в полную силу.


