Интеграция поисковой машины Яндекса с сайтом. Красивый дизайн, мощные алгоритмы и немного багов

За 3 месяца сразу 2 клиента ИНТЕРВОЛГИ (Интернет-магазины разной тематики) обратились с просьбой “улучшить поиск”.

Первый — интернет-магазин фоторамок, второй — онлайн-аптека. 

Бизнес разный, но потребность простая и универсальная: повысить релевантность поиска. Посетители сайта путались в сложных названиях и артикулах товаров и стандартный поиск Битрикса (даже с помощью движка sphinx) просто не справлялся с таким количеством опечаток и недослышок (особенно сильных в фарма-отрасли).

Мы нашли несколько решений (свой механизм исправления опечаток, свой справочник подсказок — но эти доработки предполагали, прежде всего, большой объем ручной работы). 

Зачем изобретать свой дорогостоящий велосипед, если решение на рынке уже есть? Пусть поиском подходящего товара по запросу “цэтромонь” займется сервис, который на этом собаку съел: Яндекс. А если подход себя оправдает и захочется чего-то более продвинутого, можно будет посмотреть в сторону коммерческих поисковиков: AnyQuery, Multisearch или поисковых движков типа Elasticsearch.

В этой статье рассмотрим, как установить поиск Яндекс на сайт, какие могут быть сложности и какие дополнительные настройки могут понадобиться.

Как это работает

Бесплатный сервис Яндекса “Поиск для интернет-магазинов” устроен так:

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

  2. Получив перечень, Яндекс строит по своим алгоритмам поисковый индекс.

  3. Дальше развилка

    1. Вариант А. Яндекс дает код для вставки на сайт. Страница поиска с подсказками в итоге выглядит как “окно в Яндекс” — в бело-желтых тонах.

    2. Вариант Б. Интеграция с сервисом Яндекса и выдача его результатов поиска и подсказок как своих. В своем дизайне и своем виде. Мы выбрали именно такой вариант

Что сделала ИНТЕРВОЛГА

Мы создали свой YML-фид. Стандартный генератор фидов из коробки нам не подходил, логика была нестандартная.

Но беда пришла откуда не ждали. Сервис бесплатный и у него статус “бета-версия” (на момент написания статьи, март 2021). И это не просто так. В сгенерированном YML-файле он обнаружил ошибки… но упорно отказывался уточнять, какие именно. Просто висело сообщение, что формат некорректный. Да, с дружелюбностью к владельцам интернет-магазинов пока что проблемы. 

В разное время помогали 3 странных действия:

  1. Просто перезапустить индексацию YML-файла. Без изменения YML, просто наудачу. Помогало в 10% случаев.

  2. Загрузить товары Яндексу по частям. Если он не “ест” 10 тысяч товаров, сначала отправляли “ложечку за маму” (1000 товаров), потом “ложечку за папу” (уже 2000) и так далее пока он сам не заметит, как успешно обработал все 10 000 товаров. Работа простая, но нудная. После первого успешного парсинга файла целиком проблемы прекращались (!). Помогало в 20% случаев

  3. Написать в ТП Яндекса. Через три дня они отвечали что-то в духе “ой, сейчас исправим” и парсер YML переставал ругаться. С нашей стороны никаких изменений YML-файла не было, что показательно. Срабатывало в остальных 70% случаев.

Конечная цель: такой вид окна Яндекса.

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

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

Но сжигать за собой мосты и отключать стандартный поиск не стоит. Иногда, даже спустя 2-3 месяца стабильной работы, поиск внезапно ломался. YML-файл ни с того, ни с сего оказывался невалидным. Чтобы это не парализовало работу сайта, добавили простой тест: периодически скриптом искали через Яндекс “нурофен” и еще пару товаров, которые всегда 100% должны быть в наличии. Если Яндекс не отзывался, давал ошибку или пустой результат — считали, что у нас авария и переключались на Битриксовый поиск. А дальше см. алгоритм решения проблем с поиском выше.

Технические детали

Чтобы отправить запрос в Yandex нужно в Кабинете разработчика получить 2 ключа:

  1. ID Яндекс.Поиска

  2. API ключ для Яндекс.Поиска

Ключ бесплатный, в кабинете нет ни слова об ограничениях. Пока что мы используем для всех запросов одного сайта одну пару ID+ключ.

Чтобы получить список товаров по подсказке, нужно вызвать REST-метод, описанный в документации. Документацию найти непросто, вот ссылка на нее.

В ответе возвращаются несколько узлов: товары (documents), разделы каталога (categoryList), исправления (misspell).

Пример товара:

Array
(
    [id] => 4711552
    [name] => Цитрамон П 10 таблетки Ирбит
    [url] => <Путь к товару на сайте>
    [categoryId] => 2085
    [categoryParents] => Array
        (
            [0] => 2033
            [1] => 2085
        )
    [origSnippet] => <Путь к картинке на сайте>
    [parameters] => Array
        (
            [0] => Array
                (
                    [name] => Действующее вещество
                    [value] => АЦЕТИЛСАЛИЦИЛОВАЯ КИСЛОТА+КОФЕИН+ПАРАЦЕТАМОЛ
                )
        )
)

Пример раздела каталога:

Array
(
    [id] => 2033
    [value] => Лекарственные препараты
)

Пример исправления:

Array
 (
    [rule] => Misspell
    [text] => цитрамон
    [sourceText] => цэтромонь
)

Яндекс показывает все те данные о товаре и разделах, которые были в YML-фиде. Этого достаточно, и даже немного с избытком: нам хватило бы только ID товаров. Но регулировать перечень возвращаемых полей пока нельзя.

Имеет смысл указать в фиде только “вечнозеленые” данные, по которым идет поиск: название, описание, текстовые поля. А вот сиюминутные показатели, например: цены, наличие, сроки поставки — можно “довыбрать” непосредственно из БД сайта в момент показа поисковой выдачи.

Результат

Мы смогли сделать для клиентов устойчивый к опечаткам и ошибкам поиск.

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

Многие задачи требуют не просто разработки. Следует подумать об отказоустойчивости, масштабировании и гибкости. Мы предлагаем именно такой подход.

Оцените статью
01.04.2021
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

Статьи по теме

Биллинг ИТ-компании на laravelОбычно мы рассказываем, как принесли пользу клиенту. Но сегодня у нас будет особый разговор, ведь заказчиком биллинговой системы ИТ-компании была… ИНТЕРВОЛГА! ...
Почему мы рекомендуем начинать с внедрения базовой версии b2b-платформыК нам в компанию ИНТЕРВОЛГА часто обращаются клиенты с заявками на внедрение личного кабинета дилера с длинным списком желаемых функций. Однако мы рекомендуем н...
Функция b2b-платформы — отправка рекламаций в CRMОптовые покупатели — ключевой сегмент экономики торгово-производственного предприятия, и их удовлетворённость напрямую влияет на успех бизнеса. Новый функционал...
Как b2b-платформа передает в 1С данные по новым контрагентам В этой статье мы расскажем, что происходит после того, как клиент зарегистрировал в б2б-кабинете новое юридическое лицо и сделал заказ, а также покажем, как...
Автоматизация и оптимизация бизнес-процессов — лонгрид, чтобы не запутаться Статья будет полезна всем, кто хочет улучшить эффективность своего бизнеса или узнать больше о возможностях автоматизации бизнес-процессов для повышения ко...
10 обязательных задач поддержки сайта на БитриксСтатья посвящена организации поддержки сайтов на Битрикс. Здесь не только про решение технических проблем и устранение багов. Здесь про развитие живых проектов...
Мы работаем по одному из двух форматов:
  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).
ИНТЕРВОЛГА предоставляет:
  • регулярные онлайн-планерки с заказчиком;
  • квалифицированных специалистов;
  • организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
  • полную прозрачность и регулярность отчетов о результатах.
Ключевые услуги:
  • нагруженный интернет-магазин;
  • личный кабинет;
  • оптовые продажи — B2B-платформа;
  • маркетплейс;
  • технический аудит сайта;
  • Битрикс24 — корпоративные HR-порталы;
  • Битрикс24 — построение CRM-системы;
  • Битрикс24 — личные кабинеты сотрудников;
  • Битрикс24 — аудит портала;
  • 1С — интеграция с другими системами;
  • 1С — доработка системы;
  • маркетинг — комплексное интернет-продвижение;
  • маркетинг — продвижение для B2B.
Хотите получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишитесь на рассылку — спамить не будем