Чтобы понять, что хочет пользователь, нужен контекст. Когда-то всем контекстом, который был доступен Яндексу, был текст поискового запроса. Со временем мы научились учитывать, из какого региона его задают.
Важным этапом стала персонализация ответа для разных пользователей — когда мы стали использовать знания о конкретном человеке, чтобы дать ему более точный ответ. Для этого мы использовали данные, посчитанные на истории запросов и кликов пользователя. Причём они были посчитаны как по истории за длинный период, так и по недавней. Мы рассказывали на Хабре об этом этапе.
Каждый раз дополнение пользовательского контекста влечёт за собой изменение качества работы системы, а иногда и пользовательского поведения. Например, когда мы начали учитывать регион, из которого Яндексу задают запрос, люди перестали вручную указывать в поисковой строке название своего города. Незачем писать [холодильник Новосибирск], если поисковая система и так покажет тебе местные предложения. А пользователь сэкономит несколько секунд на наборе символов в запросе.
Использование истории поисков пользователя повлекло за собой ещё один качественный скачок. Яндекс стал чаще показывать любимые сайты пользователя, выбирать более близкие человеку тематики.
Но интересы пользователей не статичны. Более половины всех поисковых интересов живут менее одного дня. Например, человек в целом — игроман, но в какой-то момент он захочет найти, где посмотреть фильм, снятый по мотивам какой-нибудь игры. Или узнать, что это за фильм и больше не вспоминать об этом.
Или человек узнал прогноз погоды и решил купить кондиционер. В этот момент поисковой системе необходимо уметь быстро перестроиться под его новый интерес и реагировать на те запросы и клики который он делал только что.
Чтобы учитывать все эти мимолётные действия пользователя, нужно уметь очень быстро передавать и обрабатывать данные о них, которые будут использоваться в ранжировании.
Realtime MapReduce
Благодаря нашей новой технологии, которая позволяет доставлять данные в реальном времени, в 95% случаев совершённые человеком действия становятся доступны для участия ранжировании уже через 7 секунд.
Для этого в реальном времени обрабатываются около 10ТБ логов в сутки, с нагрузкой до 200мб в секунду. При этом она полностью совместима с текущими технологиями обработки данных, включая reduce операции.
Это изменение влечёт за собой ещё одно интересное следствие. Результаты поиска перестают быть статичными — поиск становится адаптивным. Один и тот же запрос, заданный после разных запросов, может содержать разный порядок результатов и даже разный состав первой десятки.
Раньше персонализация поиска работала только для 30% самых активных пользователей. Теперь все пользователи Яндекса имеют свой поиск, который подстраивается под них буквально со второго запроса.
О том, как мы реализовали новую технологию доставки данных, мы расскажем в одном из следующих постов.
ссылка на оригинал статьи http://habrahabr.ru/company/yandex/blog/181514/
Добавить комментарий