Pull to refresh
547.27
Яндекс
Как мы делаем Яндекс

Как и почему мы переосмыслили поисковое поле ввода Яндекса

Reading time 8 min
Views 24K

Мы уже дважды рассказывали про наши поисковые подсказки: первый пост вышел аж в 2012 году, второй же случился совсем недавно.



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


1. «Расширяющееся» поле ввода


К началу 2017 года многие мессенджеры уже обладали «резиновыми» полями ввода. Человек, пишущий достаточно длинный текст, конечно, хочет иметь возможность увидеть если не текст целиком, то хотя бы значительную его часть.


Удивительно, что поисковые системы полностью проигнорировали этот тренд. А ведь длинные запросы составляют значительную часть потока. Скажем, запросы, содержащие более семи слов, составляют до 10% всего потока запросов к Яндексу!


Вообще, длина запросов — очень интересная характеристика. Доля длинных запросов — показатель, подверженный выраженной сезонности, вызванной учебными запросами школьников и студентов. Поэтому на графике доли длинных запросов хорошо видны все праздники, выходные и летние каникулы. Но даже за вычетом этого эффекта заметно, что запросы постепенно становятся длиннее: скажем, летом 2017 года доля длинных запросов была на 20% больше по сравнению с летом 2016 года. График ниже показывает динамику изменения доли длинных запросов в потоке запросов к Яндексу, за единицу принято значение, соответствующее началу 2016 года.



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


Исходя из этого, мы очень хотели внедрить т.н. расширяющееся поле ввода: поле, размер которого увеличивался бы в процессе ввода текста, когда в этом возникала бы необходимость.


Идея достаточно простая, однако мы потратили примерно полгода на то, чтобы довести её до продакшена. Поначалу мы слишком сильно загорелись этой идеей и существенно её расширили, придумав отдельную страницу ввода запроса, которая полностью накрывала текущий экран, содержала широкое поле ввода, полнотекстовые подсказки и так далее. К счастью, у меня остался один скриншот этой страницы, так что я могу её вам продемонстрировать:



Когда мы включили отображение страницы ввода небольшому количеству пользователей, оказалось, что эта страница для них непонятна. Они переставали задавать запросы со страницы поиска, пытались делать это с главной страницы Яндекса и так далее. Так что нам пришлось досрочно выключить эксперимент!


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


В результате получилось то решение, которым теперь могут пользоваться пользователи Яндекса на страницах результатов большого поиска, поиска по картинкам и поиска по видео:



Должен сказать, что это внедрение — одно из лучших, когда-либо осуществлённых командой саджеста в мобильном Яндексе. Нам удалось повлиять даже на то, как часто пользователи пользуются поисковой системой!


2. Исторические подсказки


Ещё один факт объективной реальности: пользователи часто задают одни и те же запросы. Если взять запросы медианного пользователя, мы увидим, что более половины своих запросов он задаёт повторно.


Раз так, можно упростить ввод запросов, которые задавались этим пользователем в прошлом. Скажем, приоритетно показывать в саджесте те запросы, которые пользователь уже вводил.


Надо сказать, что в десктопном Яндексе эта идея реализована уже очень давно: после ввода второго символа показывается некоторое количество исторических подсказок, выделенных фиолетовым цветом, если их начало совпадает с текущим вводом.



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


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


  2. Что делать с отображением исторических подсказок в связи с удалением? Предположим, пользователь удалил некоторый запрос — на его место должен придти новый, более ранний? Но тогда пользователю может потребоваться сделать несколько сотен удалений, чтобы уничтожить все необходимые подсказки. Может быть, просто всегда показывать последние 10 подсказок, и не обновлять их список в процессе удаления? Но тогда после перезагрузки страницы пользователь увидит какие-то новые исторические подсказки, а к этому он может оказаться не готов.


  3. Исторические запросы должны доставляться и обновляться очень быстро. Скажем, сразу после того, как некоторый запрос задан, он должен появиться среди исторических подсказок. Можно сказать, что только что заданный запрос на самом деле не нужен, т.к. никому не потребуется задавать текущий запрос заново, но без него функциональность исторических подсказок будет для пользователя совершенно непонятна, поэтому у нас очень серьёзные требования к бекенду персональных подсказок.


  4. Требуется понять, что является сущностью, для которой сохраняется история запросов. Должны ли исторические запросы различаться для разных сервисов, или же они должны совпадать? Нужно ли хранить историю для каждого конкретного браузера, или же нужно пытаться хранить её ещё и для залогиненных пользователей так, чтобы история запросов была доступна на всех устройствах?



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


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


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


Теперь исторические запросы доступны на всех наших основных поисковых сервисах, а также на Яндекс.Маркете. Ниже, например, представлены мои исторические подсказки на Яндекс.Картинках и Яндекс.Видео.



3. Саджест в приложениях и сервисах


В 2017 году мы обратили наши взоры на приложения Яндекса. Было очевидно, что подсказки в них отстали в своём развитии от веб-версии, а это недопустимо! Ведь именно пользователи наших приложений должны получать самый лучший пользовательский опыт.


Наши основные поисковые приложения — это Яндекс.Браузер и приложение Яндекс.


Приложение Яндекс уже могло похвастаться пословными подсказками и некоторыми богатыми ответами, но в нём не было полнотекстового ввода. Яндекс.Браузер, в свою очередь, содержал только полнотекстовые подсказки. При этом наш Браузер — программа уникальная, ведь в нём омнибокс находится в нижней части экрана, поэтому и поисковые подсказки в нём должны отображаться "перевёрнутыми".


В итоге нам вместе с командами разработки приложений удалось реализовать всё, что необходимо. В Яндекс.Браузере пословные подсказки располагаются непосредственно над омнибоксом, что очень удобно и позволяет действительно быстро набирать поисковые запросы, т.к. саджест находится максимально близко к клавиатуре, на которой сосредоточено внимание человека в момент ввода. В приложении Яндекс сейчас реализован передовой с визуальной точки зрения саджест. Именно к этому решению мы постепенно придём и в других приложениях, и в веб-версии Яндекса.



Хочется ещё сказать о подсказках в Маркете. Нам удалось буквально за месяц внедрить в Маркет всё лучшее, что было в большом саджесте: пословные и полнотекстовые подсказки, историю и крестики для её удаления, причём сделать это как в веб-версии, так и в приложениях.



Консистентные интерфейсы помогают пользователям: им не нужно привыкать к новым незнакомым механикам. Пользовательский опыт, приобретённый в Поиске, оказывается полезным и при использовании других наших сервисов, и это хорошо заметно на метриках.


В то же время, существуют площадки, влиять на которые мы не можем. Скажем, многие пользователи вводят свои запросы через омнибокс мобильного Chrome. Оказалось, впрочем,
что саджест в Chromium умеет достаточно много: картинки, текст специального вида и так далее, смотрите метод ParseSuggestResults в исходниках. Благодаря этому оказалось возможно предоставить пользователям мобильного Google Chrome, которые выбрали поиск Яндекса в качестве основного, все возможности нашего богатого саджеста: фактовые ответы, погоду, пробки и так далее.



Это одно из моих любимых внедрений. Здорово, что создатели Chromium предусмотрели все эти возможности! Конечно, досадно, что сейчас невозможно реализовать в Chrome пословный саджест.


4. Факты в подсказках


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


Чрезвычайно важный класс видео-запросов — сериалы. Мы знаем названия всех сериалов и понимаем, как устроены запросы о них. Тексты запросов часто можно разбить на логические части: название сериала, номер рядом со словом "серия", номер рядом со словом "сезон". Логично такие логические части объединять в рамках одной пословной подсказки. Если раньше по вводу "игра престолов" мы могли показать продолжения "1", "1 сезон", "7" и "5", причём числа могли относиться и к сериям, и к сезонам, то теперь мы внесли больше структуры:



Другой пример понимания запроса — это возможность переместить пользователя на страницу, гарантированно содержащую нужный ему ответ. Например, когда пользователь вводит запрос "терминатор", мы понимаем, что он с большой вероятностью имеет в виду фильм 1991 года, а, когда он вводит запрос "терминатор 3" — речь совершенно однозначно идёт о фильме 2003 года. Поэтому можно, помимо собственно запросов, показать в саджесте и прямую ссылку на нужный фильм.



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



Будущее


Что ждёт поисковые подсказки в будущем?


Конечно, мы будем продолжать работать над "транзакционностью". Очень здорово, когда поисковая система может выдать ответ ещё во время ввода запроса, позволяя пользователю пропустить фазу задания запроса, ожидания загрузки результатов поиска, их просмотра и так далее. Нужно продолжать обогащать подсказки и решать как можно больше задач до ввода запроса.


Естественно, нужно продолжать работать над данными. После предыдущей статьи к нам поступило несколько вопросов о том, как устроен саджест внутри. В будущих публикациях мы вернёмся к этой теме и расскажем, какие алгоритмы и структуры данных требуются для того, чтобы сделать хорошие подсказки, отвечающие на 100 тысяч запросов в секунду, обрабатывающие каждый запрос менее чем за 50 миллисекунд и при этом осуществляющие поиск среди полутора миллиардов возможных вариантов. Нам есть что рассказать о предсказаниях частот запросов и формировании правильных топов — впрочем, ясно также и то, что в этих областях многое можно улучшить.


Поисковые подсказки — одна из функционально и технологически сложных интерфейсных частей страницы результатов поисковой выдачи. Чрезвычайно важно, чтобы весь код, отвечающий за взаимодействие с пользователем, вычисляющий метрики и так далее, загружался и отрабатывал как можно быстрее. Конечно, здесь мы сталкиваемся и со стандартными проблемами программирования под огромное количество браузеров, версий ОС и собственно устройств. Поэтому разработка и тестирование поисковых подсказок — очень интересная тема и, я надеюсь, об этом у нас тоже будут публикации и выступления.


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


Всем этим будет заниматься команда поисковых подсказок в новом году. Надеюсь, через год мы снова сможем написать очередную статью и рассказать, что всё получилось!

Tags:
Hubs:
+60
Comments 73
Comments Comments 73

Articles

Information

Website
www.ya.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия
Representative