0/5

Поиск 2.0 на Price.ru: как мы внедрили прямой поиск и увеличили конверсию на 20%

Поиск 2.0 на Price.ru: как мы внедрили прямой поиск и увеличили конверсию на 20%
время публикации: 10:00  13 декабря 2023 года
@ijeab on Freepic
Успешность интернет-торговли во многом зависит от корректной работы поиска. Система должна «понимать» любые, даже самые необычные варианты. Второй важный параметр – устойчивость системы в периоды большого объема поисковых запросов, которые случаются в дни больших распродаж. Поиск в Price.ru – сервисе сравнения цен – был не идеальным. Что такое «прямой поиск»? И как его внедрения повысило конверсию в покупку на 20%?
Поиск 2.0 на Price.ru: как мы внедрили прямой поиск и увеличили конверсию на 20%Эдуард Ашрафьян, генеральный директор Price.ru.

Сервису сравнения цен Price.ru в этом году исполнилось 26 лет.  На сервисе представлено более 2 млн товаров и порядка 4 тысяч интернет-магазинов. Сейчас компания делает масштабную трансформацию сервиса, в рамках которой ключевая задача — полностью переработать поисковое ядро сайта. В этом году мы перешли с поиска на базе бинарного индекса на прямой поиск на базе данных. Мы уже видим результаты — улучшение usability (удобство и простота использования) и работоспособности поиска и фильтрации, что повышает конверсию.


Кому эта статья может быть полезна


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

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

Когда мы только планировали изменения и искали релевантные материалы в открытом доступе, то обнаружили, что в интернете немного статей на эту тему, поэтому решили поделиться наработками с коллегами по отрасли онлайн-торговли. 

Итак, чем нас не устраивал поиск?


Поисковая выдача часто была некорректной

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

Вот несколько кейсов, которые говорят о некорректной работе поисковой выдачи. Например, когда на запрос «телек» выпадали телекоммуникационные шкафы или на запрос «мобилка» выходила только детская игра с аналогичным названием или, когда на запрос «домашний телефон» выдавались звуковые панели.

Первая цель трансформации поиска, таким образом, состояла в реализации возможности быстрого внесения изменений по синонимам и ранжированию для обеспечения релевантной выдачи.


Слишком редкое обновление данных в поисковой выдаче


Интернет-магазины могли обновить товары на Price.ru не чаще, чем 3 раза в день в определенное время. Было недостаточно того, чтобы товары-предложения попали в общую базу. Они также должны были попасть в «бинарный индекс», где происходила подготовка данных для поисковой выдачи.

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


Сайт плохо переносил высокую нагрузку


Когда на Price.ru функционировал старый поиск, нам было сложно добиваться того, чтобы в критические моменты загруженности сайта пользователями (например, в «Черную пятницу») поддерживать работоспособность всей системы.  Это плохо влияло на индексацию страниц сайта и ранжирование информации в поисковых системах.


Проблема ранжирования поисковой выдачи


Любой поиск работает таким образом, что разбивает поисковый запрос на лексемы – это фрагменты текста поискового запроса. Например, запрос «смартфон iPhone 15 Pro Max» – это то, что вводит пользователь в строку поиска. Как только запрос попадает в систему, первое, что с ним происходит – он разбивается на лексемы: [смартфон] + [iPhone 15] + [Pro] + [Max]. И дальше, чтобы сформировать поисковую выдачу, эти лексемы необходимо соединить между собой. 

Обычно для того, чтобы выдача была более широкой, поисковики соединяют лексемы друг с другом через логический оператор ИЛИ. То есть смартфон ИЛИ iPhone, ИЛИ 15, ИЛИ Pro, ИЛИ Max. Поэтому выдача может быть широкой – это и модель iPhone 12, и 13, и 14, и среди них – искомая модель XR. На Price.ru лексемы также соединялись союзом «ИЛИ». 

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


Как работает поиск сейчас: что сделали и что изменилось


Поиск 2.0 на Price.ru: как мы внедрили прямой поиск и увеличили конверсию на 20%



Прямой поиск – более точный, сравнивает вхождения по логическому «И»


Чтобы выдача была более релевантной, мы начали соединять лексемы из поискового запроса оператором «И». В этом случае выдача строго соответствует запросу. Выходит меньше результатов в выдаче, но они более точные: пользователь получает только то, что ввел в поиск, то есть товары, которые поисковой запрос содержит в своем названии.

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

Синонимы нужны для разных целей. Самое простое – это решить вопрос с жаргонизмами и разговорными вариантами слов, которые могут использовать пользователи при написании запроса. Например, формально сейчас все устройства с сенсорным экраном, которые мы называем «телефоны», также называют «смартфоны». Если пользователь вводит запрос «телефон, iPhone 15», по идее, мы должны немного изменить этот запрос таким образом, чтобы там было слово «телефон» и слово «смартфон», чтобы система понимала, что эти слова аналогичны по смыслу.  

Соответственно, после того, как система разбивает запрос на лексемы, она проходится по словарю синонимов и ищет подходящий, например, «телефон». Также подойдет «смартфон», «сотик», «мобила» и другие. Благодаря словарю синонимов, который мы создаем, человек может написать любое из этих слов, и система поймет, что это то же самое, что «телефон», «смартфон» и так далее. 


Скорость загрузки фидов от момента загрузки до попадания на сайт сократилась с часов до минут


Новое решение для задачи поиска позволило этому процессу протекать ощутимо быстрее. Теперь интернет-магазинам, которые размещаются на Price.ru, больше не нужно ждать большое количество времени: после того, как произошла передача информации о новом товаре на Price.ru. Она практически сразу транслируется на сайт. Раньше время загрузки измерялось в часах, а иногда и даже в днях. Теперь информация от интернет-магазина попадает в базу данных, и данные сразу становятся доступными для поиска. То есть, если то, что ищет пользователь не хранится в кэше, то теперь система сразу обращается к общей базе предложений, моделей и прочего. 

Все модели и предложения в поиске Price.ru специальным образом атрибутированы: каждое предложение связано с интернет-магазином и есть возможность быстро проверить, есть ли у него, например, средства на балансе, чтобы выводить его предложения в выдачу поиска. Также каждое предложение связано с прайс-листом, появилась возможность оперативно смотреть, транслируется ли этот прайс-лист или нет.


Расширены возможности масштабирования 


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

Возможности масштабирования: технические данные

● Сервер БД подготовлен с большим запасом на нагрузку

    ○ Целый аппаратный сервер выделен под БД (1 из 28)

    ○ 256GB ОЗУ + RAID10 8 SSD дисков на 1,5 Tb каждый

● Вертикальное масштабирование виртуальных машин доступно для сателлитных сервисов (API, загрузчик фидов)

● Горизонтальное масштабирование БД стандартными средствами PostgreSQL, увеличение количества slave-серверов.

● Горизонтальное масштабирование API путем клонирования текущего stateless сервера.




Читайте также: PRICE.RU: как обучить нейронную сеть для матчинга предложений от интернет-магазинов и типовых моделей товаров




Технологический стек изменен с C++ на SQL плюс Python


Стек: SQL, Python 3.11, PostgreSQL 15.1 (техническая информация)

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


Количество используемых серверов сократилось как минимум в 4 раза


Изменена аппаратная часть: 2 сервера БД master и slave, 1 сервер API, 1 сервер загрузки приложений (техническая информация). Новая архитектура позволила уменьшить количество серверов, что приводит к оптимизации процессов и сокращению затрат.

Вывод: как изменились бизнес-показатели Price.ru

● Скорость поиска увеличилась в среднем на 30-40%;

● Скорость загрузки фидов от момента загрузки до попадания на сайт сократилась с нескольких часов до минут;

● Количество используемых серверов сократилось как минимум в 4 раза (сервера revamp, сервера API) за счет архитектуры решения; 

● После внедрения полностью снят rate limit для бота Яндекса на индексацию страниц, что влияет на ранжирование сайта в поисковой выдаче;

● Конверсия увеличилась на 20%;

● Количество просмотренных страниц увеличилось на 149%;

● Визиты с отказами сократились на 80%;

● Время на сайте увеличилось на 132%.


Эдуард Ашрафьян, 
генеральный директор Price.ru.

Для NEW RETAIL


0
Реклама на New Retail. Медиакит