company_banner

Как поисковые подсказки каждый день экономят человеческую жизнь

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



    Задача Яндекса — отвечать на вопросы, как заданные так и нет. Поиск — про заданные вопросы, но пользователю можно помочь их сформулировать. Ведь один вопрос можно сформулировать по-разному и часто правильная его постановка помогает найти более подходящие ответы. Особенно это полезно, когда человек ищет что-то по малознакомой ему теме и может недостаточно владеть правильной терминологией. Или, например, надо найти какую-то цитату или её автора. Не всегда человек может точно её воспроизвести. Если вместо «из всех искусств для нас важнейшим является кино» написать «из всех искусств для нас архиважнейшим является кино», то есть вероятность, что пользователь может не получить нужную ему информацию. Кстати, после того как он увидит подсказку с правильным вариантом, ему, может, и не понадобится искать дальше. И это не говоря о том, что саджест помогает избежать орфографических ошибок.

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

    Например, поисковые подсказки умеют показывать переводы английских слов.
    Перевод в поисковых подсказках Яндекса

    Или давать ответы на однозначные запросы.
    Ответы на однозначные запросы в поисковых подсказках Яндекса

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

    С поисковыми подсказками, учитывающими предыдущий запрос, мы экономим ещё 7 месяцев. Оцените сами. Если человек искал [назад в будущее], то дальше он захочет найти [кристофер ллойд], а не [контакт] или [карта метро].

    Поисковые подсказки по предыдущему запросу
    Причём уточнённый саджест покажется и просто после клика в поисковой строке. В случае с фильмом Роберта Земекиса первой подсказкой будет [мы из будущего].

    Работа над поисковыми подсказками, наверное, мечта для человека, изучавшего математику и computer science. Она требует как умения делать выводы на основе анализа пользовательских запросов, так и определённого программистского мастерства. Ведь саджест — это миллионы запросов на разных языках, из которых нужно создать такую структуру данных, которая позволит отвечать на поступивший запрос буквально за пару миллисекунд. Для этого нужно сложить все запросы в дерево так, чтобы по нему можно было очень быстро пройтись. Потом надо построить десятку самых подходящих запросов по любому префиксу с учётом целого ряда факторов, которые мы учитываем в формировании подсказок. Например, местонахождение пользователя. А для того чтобы сделать саджест, меняющийся в зависимости от предыдущего запроса, нам надо было изменить существовашие структуры данных. И мы собрали дополнительное дерево, содержащее в себе всевозможные предыдущие запросы. Их оказалось больше 30 миллионов.

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

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

    Например, на японском
    Поисковые подсказки Яндекса на японском

    или арабском.
    Поисковые подсказки Яндекса на арабском языке
    Яндекс
    425.61
    Как мы делаем Яндекс
    Share post

    Comments 10

      +4
      Можно добавить какие-нибудь пасхальные яйца вроде:

      > ответ на вопрос жизни вселенной и всего такого — 42

      или

      > как пропатчить KDE2 под FreeBSD — Нафига козе баян?

      Есть ли что-то подобное?
        +4
        А вы попробуйте свой первый вариант ввести в поиск яндекса :)
        +1
        Любопытно — на картинке среди японских вариантов на «ニ» три разных Покемона, дважды Нинтендо (просто и 3ds), «ня», «ню» (да, то самое ню), ну и «Нико-нико до: га» (вроде японского ютюба, самый логичный, пожалуй, результат). В гугле же варианты серьёзнее — например, «новости» (ню: су) или «Ниссэн». Выглядит так, будто гугл взрослее яндекса :-)
          0
          А искали ли вы до этого что-нить про анимэ?
            +2
            Конечно, искал, а потом снял скриншот и вставил в вышеприведённую статью тайком от её автора.
              +1
              Сорри, невнимателен был.
              значит этот вопрос нужно задать автору скринов))
          –1
          Спасибо за подсказку: «Как перестать читать хабр и начать жить».
            0
            Заголовок поста круто звучит ) Так и крутится «Сегодня с помощью подсказок сэкономил где-то процентов 5 своей жизни»
              0
              Подсказки на фразу «Почему я» как всегда доставляют. Сразу видно как жизнь экономиться :)
                +1
                Честно сказать, разочарован в данной статье: от такой технической конторы как Яндекс и на таком техническом ресурсе как Хабр ожидал описания используемых алгоритмов, ссылок на соответствующие проекты-библиотеки на github, да хотя бы описания сложных ситуаций с которыми столкнулись и путей их решения в конце-то-концов. А что имеем на деле? Да, наш поиск ищет, подсказки подсказывают, дерево строим, варианты выдаем. Так и хочется сказать, ну и что? В общем, печально, господа…

                Only users with full accounts can post comments. Log in, please.