SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Поиск: что там
внутри?
Федор Романенко
Качество поиска Яндекса,
ведущий менеджер-эксперт
Поиск
Как он ищет?
Как искать быстро?

Вы ищете во всем интернете? Так быстро?
• нет, мы скачиваем странички, обрабатываем и
кладем в индекс
• по индексу ищем быстро: 100мс, 200 млн. / день
• но неизбежна задержка: скачивание, обработка,
выкладывание на поиск, главное - переагрегация

4
Структура поиска

5
Поиск - фазы
•
•
•
•
•
•
•
•
6

подготовка индекса
поиск по инвертированному индексу
фильтрация с прюнингом для широких
легкое ранжирование - фастранк
ранжирование – матрикснет
смешивание TopN
сниппеты
классификация запроса и построение выдачи
Структура инвертированного индекса
Было: сортировка по документам и позициям
(word, d, s, w, f)+
Стало: по словам, потом - документам и позициям
(word, (d, s, w, f)+ )+

Классическая структура инвертированного индекса
Ключи:
prefix-compression( (key, offset)+ )
Скип-лист:
(d, offset)+
Инвертированный индекс:
( differential-compression( posting lists ) )+
7
Поиск – дерево запроса
(студент && ( мгу || (московский && государственный &&
университет) ) )

8
Поиск – ленивые итераторы
Дерево ленивых итераторов - идем по номерам документов по
возрастанию:
• узел - curDoc :="мин. номер документа >= curDoc"
• И - curDoc:=Max(curDoc(i))
• ИЛИ - curDoc:=Min(сurDoc(i))

(
[2, 3, 5,
13
[2,
6,
21
) и
[
3,
7,
14, 21
=>
[
3,
21

] или
]

]
]

Результат: документ + набор “хитов”
9
Фильтрация
Документ нашелся = допущен в ранжирование
• есть нужные слова запроса в тексте или
ссылках
• стоят на нужном расстоянии / подряд
• кворум для длинных запросов:
sum(idf(hits)) >= Q(sum(idf(query words)), query)

10
Оптимизации
Для одной машины (индекс 3M документов)
Прюнинг (для широких запросов)
• документы отсортированы по убыванию статранка
• рассматриваем не более 50K отфильтрованных
• ограничиваем время выполнения

ФастРанк (легкая формула)
• считаем легкую формулу на легких факторах
• отправляем в ранжирование Top 1000 лучших
11
Ранжирование

•
•
•
•

12

считаем все тяжелые факторы, всего 800
МатриксНет: 10K бинарных деревьев глубины 6
получаем ранг документа
выбираем Top10 по рангу
Метапоиск: слияние, кеширование и
сниппеты
•
•
•
•
•

13

управляем нагрузкой и репликами
собираем Top10 с каждой машины
считаем Top10(Top10(i))
кешируем
запрашиваем сниппеты для Top10
Построение выдачи
• собираем TopN от вертикальных поисков
(свежесть, видео, картинки)
• считаем классификаторы по
– оффлайн данным
– запросу
– ответам
– статистике ответа

• строим выдачу из вертикалей и
колдунщиков
14
Балансировка нагрузки

15
Надежность и производительность
• достигается распределением нагрузки и репликацией

• сетевые балансеры направляют запросы в 7 ДЦ (по IP)
• в ДЦ запрос попадает на 1 из 200 метапоисков (по IP)
• метапоиск отправляет на 1 из 100 кеширующих
метапоисков (по запросу)
• метапоиски мониторят загрузку и производительность
базовых поисков

• выбирают 2000 базовых из 10 реплик
• перезадают запрос, принимают решение о выдаче
частичного результата
16
Качество поиска
Разве еще не всё написали?
История
• Яндекс-поиск в интернете – 1997
• рост отдела качества поиска – 2006
• MatrixNet – 2009
• Турция – 2011
• 1000 инженеров – 2013

18
Алгоритм поиска?
Нет одного алгоритма, их десять тысяч
•
•
•
•
•
•
•
•
19

обход и индексация интернета
производительность
лингвистика
разработка факторов и анализ данных
очистка данных и антиспам
определение целевой метрики
алгоритмы машинного обучения
смешивание выдачи
Качество
• у почти всех алгоритмов есть "качество", т.е.
выбор из нескольких вариантов – плохих и
получше
• мы непрерывно занимаемся улучшением
качества
• будем им заниматься всегда
• качество измеряется числовыми метриками
• метрика хороша, если показывает наше
плохое качество
20
Базовая метрика качества поиска
Оценка «удовлетворенности» пользователя

Для ответа:
• Gain: rel(i) - релевантность одного документа [0..1]
• оценки: IR (0.0), R- (0.07), R+ (0.14), U (0.40), V (0.61)
Для десятки:
• Cumulative G: sum(1..10, rel(i)) - сложим для десятки
• Discounted CG: rel(1) + sum(2..10, rel(i) / log2(i)) - с
дискаунтом за позицию
• Normalized DCG - DCG / IDCG - нормализуем на
достижимый максимум
Для поиска:
• среднее по репрезентативной корзине запросов
21
Метрика pFound
Каскадная модель удовлетворенности
пользователя
• с вероятностью R удовлетворяется ответом
• с вероятностью (1-R)*0.15 устает
• с вероятностью (1-R)*0.85 читает дальше

22
Обучение с учителем
• асессоры оценивают ответы по инструкции
• инструкция (150 страниц) описывает наше
продуктовое видение
• 1000 асессоров
• 10 млн. ручных оценок за 2 года
• настоящих запросов все равно больше (200 млн/д)
• учим машину на примерах

23
Модель ранжирования

• факторы ранжирования (числа), считаются для пары
(запрос, документ)
• на них считаем формулу релевантности, берем top10
• модель: (f1(q, d), f2(q, d), ... , fn(q, d)) -> rank(q, d)
• специфическая модель: не призвана отражать реальный
мир, просто сложная штука с кучей параметров

24
Модель ранжирования MatrixNet
Сумма 10K «oblivious» деревьев решений глубины 6

25
MatrixNet - особенности
• количество параметров огромно: 10K * (6*2+64) ~ 1M
• сложная и гибкая, но не переобучается
...
-4025627,483990,-36437960,39979596,
-92842056,-50086892,-100233272,243162224,
-22282850,57163664,-24991620,-9889194,
...
vars[5699]
vars[5700]
vars[5701]
vars[5702]

=
=
=
=

fFactorInt[376]
fFactorInt[376]
fFactorInt[376]
fFactorInt[376]

...
,{376, .0f}
,{376, 0.6251018047f}
,{-1, .0}
,{376, 0.05682743713f}
,{376, 0.4546194971f}
...

26

>
>
>
>

1060970280 ? 1 : 0; // 0.738757
1061923687 ? 1 : 0; // 0.795584
1049721454 ? 1 : 0; // 0.284137
948291011 ? 1 : 0; // 6.37877e-05
Машинное обучение ранжирования
• сталкиваем Модель Пользователя и Модель
Ранжирования
• подбираем параметры модели ранжирования
• максимизируем метрику жадной оптимизацией
• MLR находит скрытые закономерности в данных и
ожидания пользователей в метрике
• метрика = удовлетворение модельного юзера,
работающего с моделью ранжирования
• использует возможность посчитать счастье на огромном
кол-ве отличающихся поисков без экспериментов
27
Много данных
Никак не влезет на одну машину
Откуда данные?
•
•
•
•
•

каждый ответ поиска (200 млн/день) и клики записываются
логи всех сервисов
данные от браузера и счетчиков Метрики
от партнеров
любые данные могут быть полезны в качестве

Огромная коллекция – 20ПБ (20 000 000 000 000 000 байт),
нужно уметь с ней работать!

29
Распределенные вычисления
•
•
•
•
•
•

большинство таблиц не влезает на одну машину
нужны распределенные вычисления
вручную можно внедрить 5 алгоритмов за карьеру
нужна надежность хранения
проблема эффективной загрузки серверов
общий кластер -> приоритизация и планирование

500 задач одновременно на 2000 серверах!

30
Парадигма MapReduce
•
•
•
•

входная таблица с независимыми записями
Map(record) -> (key, value)+
сортировка по key
Reduce(key, (value)+) -> result(key)

• Map - выборка нужных данных, определение ключей
• Reduce - агрегация по ключу

31
MapReduce
Детальная схема MapReduce процесса

32
Пример WordCount
Найти 100 самых частотных слов в коллекции документов
• На входе: таблица с документами Docs
• Map: считаем слова в документе, =>
(word, tf)
• Reduce1: для word суммируем частоты tf =>
(hash(word) % 1000, (word, count))
• Reduce2: для 0..999 вычисляем Top100 самых частотных =>
("result", (word, count)+)
• Reduce3: сливаем 1000 Top100 пар (word, count) =>
("output", (word, count)+)
Простая реализация без оптимизаций (не тестировалась ;)
mapreduce -map "tr -cs '[:alnum:]' 'n'" -reduce "uniq –c"
–src Docs –dst Stat
mapreduce –read Stat | sort +0nr | head -n 100
33
Реализация MapReduce
Yandex MapReduce:
• тройная репликация или Reed Solomon Code
• сжатие чанков ZIP (сжатие 4.31)
• последовательная почанковая обработка
• умный шедулер
Real-Time MapReduce:
• нужен для свежести и RT-персонализации
• инкрементальное обновление результата при изменении
входных данных
• мгновенная инвалидация и пересчет по цепочке
• RT база данных в основе
34
Свежесть и разнообразие
Что вы имели в виду?
Свежесть
Страница в интернете, почему же она не находится?
Поиск страницы по узкому запросу:
• найти и проиндексировать
Поиск новостей на свежую тему:
• не так просто, само не найдется!
• свежее составляет 0.1% от базы, но нужно в 20% случаев
• не накопились факторы: ссылки и пользовательское
поведение

36
Real-Time робот
•
•
•
•
•
•

распределенная RT-архитектура
непрерывное обновление веб-графа
CrawlRank (aka OPIC) алгоритм - RT PageRank
адаптивный переобход хабов для поиска нового
десятки фидов об обновлениях
RT-индексация и поиск

Выкладываем лучшие документы с задержкой в
секунды

37
Новости по широкому запросу
• найти новости по [навальный] ранжированием не
получится
• вероятность << 0.1%
• если были новости, то нужно много свежего
• если нет, то свежее - вряд ли хорошее
• нужен "семантический" триггер
• величина "свежего интента“ - вероятность, что
пользователь с таким запросом хочет свежее
– [захват автобуса норвегия] = 90%
– [цискаридзе] = 40%
– [задорнов] = 10%

38
Детектор свежести
• классификатор наличия потребности в свежем
• самый большой в поиске, на 150 факторах:
– изменение частоты запросов
– появление новостных сюжетов
– увеличение кол-ва релевантных свежих
– клики на свежее
– всплеск слова в Твиттере
– новостные слова (взрыв, заявил, путин)

Структура свежего потока (доля, величина интента)
• 10% - немного свежего (0.2)
• 6% - много свежего (0.4)
• 2% - только свежее (0.9)
39
Разнообразие при неоднозначности
• один запрос - одна выдача - много интентов
• удовлетворить разных пользователей одной
страницей => разнообразие
• смешиваем вертикали: веб-поиск, свежесть, видео,
региональная ...
• метрика WidepFound (расширение pFound):
– вероятности интентов
– релевантности документов для интентов

40
Спектр - универсальное разнообразие
• учимся понимать запросы [объект потребность]:
[битлз mp3 скачать]
• считаем вероятности потребностей по логам
запросов
• смешиваем по запросу [битлз] выдачи для
–
–
–
–

41

[битлз слушать онлайн]
[битлз видео]
[битлз фото]
[битлз википедия]
Это для начала!
Федор Романенко
Ведущий менеджер-эксперт
качества поиска
+7-903-6841530
fedor57@yandex.ru

Спасибо!

Contenu connexe

Tendances

2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с ElasticsearchОмские ИТ-субботники
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Ontico
 
Поисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининПоисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининMyAcademy
 
Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...Ontico
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RUcDima
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...sqadays8
 
Генерация вопросов к тексту
Генерация вопросов к текстуГенерация вопросов к тексту
Генерация вопросов к текстуIdris Yusupov
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Russir 2010 final
Russir 2010 finalRussir 2010 final
Russir 2010 finalyaevents
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)Ontico
 
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияЕсть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияNicolay Velizhanin
 
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев ДмитрийДмитрий Севальнев
 

Tendances (15)

2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Поисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининПоисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил Федоринин
 
Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)Про качественный поиск (Андрей Аксенов)
Про качественный поиск (Андрей Аксенов)
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Lan-Crawler Bachlor RU
Lan-Crawler Bachlor RULan-Crawler Bachlor RU
Lan-Crawler Bachlor RU
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
 
Генерация вопросов к тексту
Генерация вопросов к текстуГенерация вопросов к тексту
Генерация вопросов к тексту
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Russir 2010 final
Russir 2010 finalRussir 2010 final
Russir 2010 final
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияЕсть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
 
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий
«SEO-экспериментариум», выпуск 2 на MegaIndex.TV. Севальнев Дмитрий
 

En vedette

Вениамин Гвоздиков: Особенности использования DTrace
Вениамин Гвоздиков: Особенности использования DTrace Вениамин Гвоздиков: Особенности использования DTrace
Вениамин Гвоздиков: Особенности использования DTrace Yandex
 
Михаил Зеленков: Внедрение ipv6 в Яндекс.Поиске
Михаил Зеленков: Внедрение ipv6 в Яндекс.ПоискеМихаил Зеленков: Внедрение ipv6 в Яндекс.Поиске
Михаил Зеленков: Внедрение ipv6 в Яндекс.ПоискеYandex
 
Henning Brauer: OpenBSD's pf: Design, Implementation and Future
Henning Brauer: OpenBSD's pf: Design, Implementation and FutureHenning Brauer: OpenBSD's pf: Design, Implementation and Future
Henning Brauer: OpenBSD's pf: Design, Implementation and FutureYandex
 
Михаил Белопухов: OpenBSD: Куда катится крипто?
Михаил Белопухов: OpenBSD: Куда катится крипто?Михаил Белопухов: OpenBSD: Куда катится крипто?
Михаил Белопухов: OpenBSD: Куда катится крипто?Yandex
 
Руслан Букин: FreeBSD и встраиваемые системы
Руслан Букин: FreeBSD и встраиваемые системыРуслан Букин: FreeBSD и встраиваемые системы
Руслан Букин: FreeBSD и встраиваемые системыYandex
 
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSD
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSDВсеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSD
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSDYandex
 
Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Yandex
 
Александр Черников: Использование netmap
Александр Черников: Использование netmapАлександр Черников: Использование netmap
Александр Черников: Использование netmapYandex
 

En vedette (8)

Вениамин Гвоздиков: Особенности использования DTrace
Вениамин Гвоздиков: Особенности использования DTrace Вениамин Гвоздиков: Особенности использования DTrace
Вениамин Гвоздиков: Особенности использования DTrace
 
Михаил Зеленков: Внедрение ipv6 в Яндекс.Поиске
Михаил Зеленков: Внедрение ipv6 в Яндекс.ПоискеМихаил Зеленков: Внедрение ipv6 в Яндекс.Поиске
Михаил Зеленков: Внедрение ipv6 в Яндекс.Поиске
 
Henning Brauer: OpenBSD's pf: Design, Implementation and Future
Henning Brauer: OpenBSD's pf: Design, Implementation and FutureHenning Brauer: OpenBSD's pf: Design, Implementation and Future
Henning Brauer: OpenBSD's pf: Design, Implementation and Future
 
Михаил Белопухов: OpenBSD: Куда катится крипто?
Михаил Белопухов: OpenBSD: Куда катится крипто?Михаил Белопухов: OpenBSD: Куда катится крипто?
Михаил Белопухов: OpenBSD: Куда катится крипто?
 
Руслан Букин: FreeBSD и встраиваемые системы
Руслан Букин: FreeBSD и встраиваемые системыРуслан Букин: FreeBSD и встраиваемые системы
Руслан Букин: FreeBSD и встраиваемые системы
 
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSD
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSDВсеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSD
Всеволод Стахов: Новое в Pkg и перспективы развития системы пакетов в FreeBSD
 
Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0
 
Александр Черников: Использование netmap
Александр Черников: Использование netmapАлександр Черников: Использование netmap
Александр Черников: Использование netmap
 

Similaire à 20131112федорроманенко

Владимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPВладимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPOctopus Events
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Ранжирование: от строчки кода до Матрикснета
Ранжирование:  от строчки кода до МатрикснетаРанжирование:  от строчки кода до Матрикснета
Ранжирование: от строчки кода до Матрикснетаyaevents
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruodnoklassniki.ru
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementCEE-SEC(R)
 
20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04Computer Science Club
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Igor Miniailo
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)it-people
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поискAndrew Aksyonoff
 
Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Fwdays
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgWG_ Events
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Ontico
 

Similaire à 20131112федорроманенко (20)

Владимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPВладимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERP
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Ранжирование: от строчки кода до Матрикснета
Ранжирование:  от строчки кода до МатрикснетаРанжирование:  от строчки кода до Матрикснета
Ранжирование: от строчки кода до Матрикснета
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)
DUMP-2012 - Только хардкор! - "Аннотировать за 40 мс" Александр Лившиц (Яндекс)
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поиск
 
Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.org
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 

Plus de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Plus de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

20131112федорроманенко

  • 1.
  • 2. Поиск: что там внутри? Федор Романенко Качество поиска Яндекса, ведущий менеджер-эксперт
  • 4. Как искать быстро? Вы ищете во всем интернете? Так быстро? • нет, мы скачиваем странички, обрабатываем и кладем в индекс • по индексу ищем быстро: 100мс, 200 млн. / день • но неизбежна задержка: скачивание, обработка, выкладывание на поиск, главное - переагрегация 4
  • 6. Поиск - фазы • • • • • • • • 6 подготовка индекса поиск по инвертированному индексу фильтрация с прюнингом для широких легкое ранжирование - фастранк ранжирование – матрикснет смешивание TopN сниппеты классификация запроса и построение выдачи
  • 7. Структура инвертированного индекса Было: сортировка по документам и позициям (word, d, s, w, f)+ Стало: по словам, потом - документам и позициям (word, (d, s, w, f)+ )+ Классическая структура инвертированного индекса Ключи: prefix-compression( (key, offset)+ ) Скип-лист: (d, offset)+ Инвертированный индекс: ( differential-compression( posting lists ) )+ 7
  • 8. Поиск – дерево запроса (студент && ( мгу || (московский && государственный && университет) ) ) 8
  • 9. Поиск – ленивые итераторы Дерево ленивых итераторов - идем по номерам документов по возрастанию: • узел - curDoc :="мин. номер документа >= curDoc" • И - curDoc:=Max(curDoc(i)) • ИЛИ - curDoc:=Min(сurDoc(i)) ( [2, 3, 5, 13 [2, 6, 21 ) и [ 3, 7, 14, 21 => [ 3, 21 ] или ] ] ] Результат: документ + набор “хитов” 9
  • 10. Фильтрация Документ нашелся = допущен в ранжирование • есть нужные слова запроса в тексте или ссылках • стоят на нужном расстоянии / подряд • кворум для длинных запросов: sum(idf(hits)) >= Q(sum(idf(query words)), query) 10
  • 11. Оптимизации Для одной машины (индекс 3M документов) Прюнинг (для широких запросов) • документы отсортированы по убыванию статранка • рассматриваем не более 50K отфильтрованных • ограничиваем время выполнения ФастРанк (легкая формула) • считаем легкую формулу на легких факторах • отправляем в ранжирование Top 1000 лучших 11
  • 12. Ранжирование • • • • 12 считаем все тяжелые факторы, всего 800 МатриксНет: 10K бинарных деревьев глубины 6 получаем ранг документа выбираем Top10 по рангу
  • 13. Метапоиск: слияние, кеширование и сниппеты • • • • • 13 управляем нагрузкой и репликами собираем Top10 с каждой машины считаем Top10(Top10(i)) кешируем запрашиваем сниппеты для Top10
  • 14. Построение выдачи • собираем TopN от вертикальных поисков (свежесть, видео, картинки) • считаем классификаторы по – оффлайн данным – запросу – ответам – статистике ответа • строим выдачу из вертикалей и колдунщиков 14
  • 16. Надежность и производительность • достигается распределением нагрузки и репликацией • сетевые балансеры направляют запросы в 7 ДЦ (по IP) • в ДЦ запрос попадает на 1 из 200 метапоисков (по IP) • метапоиск отправляет на 1 из 100 кеширующих метапоисков (по запросу) • метапоиски мониторят загрузку и производительность базовых поисков • выбирают 2000 базовых из 10 реплик • перезадают запрос, принимают решение о выдаче частичного результата 16
  • 17. Качество поиска Разве еще не всё написали?
  • 18. История • Яндекс-поиск в интернете – 1997 • рост отдела качества поиска – 2006 • MatrixNet – 2009 • Турция – 2011 • 1000 инженеров – 2013 18
  • 19. Алгоритм поиска? Нет одного алгоритма, их десять тысяч • • • • • • • • 19 обход и индексация интернета производительность лингвистика разработка факторов и анализ данных очистка данных и антиспам определение целевой метрики алгоритмы машинного обучения смешивание выдачи
  • 20. Качество • у почти всех алгоритмов есть "качество", т.е. выбор из нескольких вариантов – плохих и получше • мы непрерывно занимаемся улучшением качества • будем им заниматься всегда • качество измеряется числовыми метриками • метрика хороша, если показывает наше плохое качество 20
  • 21. Базовая метрика качества поиска Оценка «удовлетворенности» пользователя Для ответа: • Gain: rel(i) - релевантность одного документа [0..1] • оценки: IR (0.0), R- (0.07), R+ (0.14), U (0.40), V (0.61) Для десятки: • Cumulative G: sum(1..10, rel(i)) - сложим для десятки • Discounted CG: rel(1) + sum(2..10, rel(i) / log2(i)) - с дискаунтом за позицию • Normalized DCG - DCG / IDCG - нормализуем на достижимый максимум Для поиска: • среднее по репрезентативной корзине запросов 21
  • 22. Метрика pFound Каскадная модель удовлетворенности пользователя • с вероятностью R удовлетворяется ответом • с вероятностью (1-R)*0.15 устает • с вероятностью (1-R)*0.85 читает дальше 22
  • 23. Обучение с учителем • асессоры оценивают ответы по инструкции • инструкция (150 страниц) описывает наше продуктовое видение • 1000 асессоров • 10 млн. ручных оценок за 2 года • настоящих запросов все равно больше (200 млн/д) • учим машину на примерах 23
  • 24. Модель ранжирования • факторы ранжирования (числа), считаются для пары (запрос, документ) • на них считаем формулу релевантности, берем top10 • модель: (f1(q, d), f2(q, d), ... , fn(q, d)) -> rank(q, d) • специфическая модель: не призвана отражать реальный мир, просто сложная штука с кучей параметров 24
  • 25. Модель ранжирования MatrixNet Сумма 10K «oblivious» деревьев решений глубины 6 25
  • 26. MatrixNet - особенности • количество параметров огромно: 10K * (6*2+64) ~ 1M • сложная и гибкая, но не переобучается ... -4025627,483990,-36437960,39979596, -92842056,-50086892,-100233272,243162224, -22282850,57163664,-24991620,-9889194, ... vars[5699] vars[5700] vars[5701] vars[5702] = = = = fFactorInt[376] fFactorInt[376] fFactorInt[376] fFactorInt[376] ... ,{376, .0f} ,{376, 0.6251018047f} ,{-1, .0} ,{376, 0.05682743713f} ,{376, 0.4546194971f} ... 26 > > > > 1060970280 ? 1 : 0; // 0.738757 1061923687 ? 1 : 0; // 0.795584 1049721454 ? 1 : 0; // 0.284137 948291011 ? 1 : 0; // 6.37877e-05
  • 27. Машинное обучение ранжирования • сталкиваем Модель Пользователя и Модель Ранжирования • подбираем параметры модели ранжирования • максимизируем метрику жадной оптимизацией • MLR находит скрытые закономерности в данных и ожидания пользователей в метрике • метрика = удовлетворение модельного юзера, работающего с моделью ранжирования • использует возможность посчитать счастье на огромном кол-ве отличающихся поисков без экспериментов 27
  • 28. Много данных Никак не влезет на одну машину
  • 29. Откуда данные? • • • • • каждый ответ поиска (200 млн/день) и клики записываются логи всех сервисов данные от браузера и счетчиков Метрики от партнеров любые данные могут быть полезны в качестве Огромная коллекция – 20ПБ (20 000 000 000 000 000 байт), нужно уметь с ней работать! 29
  • 30. Распределенные вычисления • • • • • • большинство таблиц не влезает на одну машину нужны распределенные вычисления вручную можно внедрить 5 алгоритмов за карьеру нужна надежность хранения проблема эффективной загрузки серверов общий кластер -> приоритизация и планирование 500 задач одновременно на 2000 серверах! 30
  • 31. Парадигма MapReduce • • • • входная таблица с независимыми записями Map(record) -> (key, value)+ сортировка по key Reduce(key, (value)+) -> result(key) • Map - выборка нужных данных, определение ключей • Reduce - агрегация по ключу 31
  • 33. Пример WordCount Найти 100 самых частотных слов в коллекции документов • На входе: таблица с документами Docs • Map: считаем слова в документе, => (word, tf) • Reduce1: для word суммируем частоты tf => (hash(word) % 1000, (word, count)) • Reduce2: для 0..999 вычисляем Top100 самых частотных => ("result", (word, count)+) • Reduce3: сливаем 1000 Top100 пар (word, count) => ("output", (word, count)+) Простая реализация без оптимизаций (не тестировалась ;) mapreduce -map "tr -cs '[:alnum:]' 'n'" -reduce "uniq –c" –src Docs –dst Stat mapreduce –read Stat | sort +0nr | head -n 100 33
  • 34. Реализация MapReduce Yandex MapReduce: • тройная репликация или Reed Solomon Code • сжатие чанков ZIP (сжатие 4.31) • последовательная почанковая обработка • умный шедулер Real-Time MapReduce: • нужен для свежести и RT-персонализации • инкрементальное обновление результата при изменении входных данных • мгновенная инвалидация и пересчет по цепочке • RT база данных в основе 34
  • 36. Свежесть Страница в интернете, почему же она не находится? Поиск страницы по узкому запросу: • найти и проиндексировать Поиск новостей на свежую тему: • не так просто, само не найдется! • свежее составляет 0.1% от базы, но нужно в 20% случаев • не накопились факторы: ссылки и пользовательское поведение 36
  • 37. Real-Time робот • • • • • • распределенная RT-архитектура непрерывное обновление веб-графа CrawlRank (aka OPIC) алгоритм - RT PageRank адаптивный переобход хабов для поиска нового десятки фидов об обновлениях RT-индексация и поиск Выкладываем лучшие документы с задержкой в секунды 37
  • 38. Новости по широкому запросу • найти новости по [навальный] ранжированием не получится • вероятность << 0.1% • если были новости, то нужно много свежего • если нет, то свежее - вряд ли хорошее • нужен "семантический" триггер • величина "свежего интента“ - вероятность, что пользователь с таким запросом хочет свежее – [захват автобуса норвегия] = 90% – [цискаридзе] = 40% – [задорнов] = 10% 38
  • 39. Детектор свежести • классификатор наличия потребности в свежем • самый большой в поиске, на 150 факторах: – изменение частоты запросов – появление новостных сюжетов – увеличение кол-ва релевантных свежих – клики на свежее – всплеск слова в Твиттере – новостные слова (взрыв, заявил, путин) Структура свежего потока (доля, величина интента) • 10% - немного свежего (0.2) • 6% - много свежего (0.4) • 2% - только свежее (0.9) 39
  • 40. Разнообразие при неоднозначности • один запрос - одна выдача - много интентов • удовлетворить разных пользователей одной страницей => разнообразие • смешиваем вертикали: веб-поиск, свежесть, видео, региональная ... • метрика WidepFound (расширение pFound): – вероятности интентов – релевантности документов для интентов 40
  • 41. Спектр - универсальное разнообразие • учимся понимать запросы [объект потребность]: [битлз mp3 скачать] • считаем вероятности потребностей по логам запросов • смешиваем по запросу [битлз] выдачи для – – – – 41 [битлз слушать онлайн] [битлз видео] [битлз фото] [битлз википедия]
  • 43. Федор Романенко Ведущий менеджер-эксперт качества поиска +7-903-6841530 fedor57@yandex.ru Спасибо!