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

Анатолий Ерофеев

За 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
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

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

07.03.2023
Дорожная карта внедрения платформы автоматизации оптовых продаж Про построение эффективных отделов продаж написано много крутых статей. Одни эксперты готовы сделать это за 10 шагов, другие предлагают многоэтапную эволюц...
16.02.2023
Как начать B2B-продажи онлайн - особенности и методы оптовой торговли После пандемии рынок e-commerce начал стремительно расти. Мы говорим не только о B2C, но и о B2B-сегменте. Многие крупные компании уже разглядели потенциал...
10.01.2023
Как битриксоиды в React уходили Приятно познакомиться, мы битриксоиды. Да-да, те самые которые: вообще не модные, пишут НЕ на Laravel и Symfony, ...
10.01.2023
Товарная дистрибуция 30 лет спустя. Как программисты изменили продажи крупного бизнеса «Я думал, что буду строить банк, а на самом деле построил ИТ-компанию» Олег Тиньков, безработный Есть такая штука — товарная дистри...
10.01.2023
Как мы решили выпускать собственный продукт через CustDev и у нас получилось Собственный продукт как фиксация компетенции&nbsp; В развитии крупных компаний-аутсорсеров наступает момент, когда они уже обросли опытом и компетенциями ...
19.12.2022
Учимся настраивать свою почту, не наступая на чужие грабли: Postfix + msmtp + сайт Привет, меня зовут Никита, я backend-разработчик в компании ИНТЕРВОЛГА. Работаю в компании уже 3 года, и за этот срок достаточно часто мне приходилось вози...

Мы работаем по одному из двух форматов:

  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).

ИНТЕРВОЛГА предоставляет:

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

Для доработок и развития мы предлагаем формат 100 часов в месяц. Что можно сделать за это время:

  • новые нетиповые страницы или раздел;
  • 2 отчета с индивидуальными настройками;
  • 3-5 веб-сервисов интеграции;
  • замудренный калькулятор и т.п.

Поддержка «чтобы все работало как часы» стоит 45 тысяч рублей в месяц и описана тут.

Хочешь получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишись на рассылку — спамить не будем