Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Yandex
2 июля 2012, Я.Субботник в Екатеринбурге
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верстальщики Яндекса"
О докладе:
«Куда идём мы с Пятачком, большой-большой секрет, и не расскажем мы о нём...», но сегодня мы расскажем куда идёт верстка и верстальщики Яндекса, какими современными технологиями мы уже пользуемся, а на какие активно засматриваемся.
Обзорный доклад про базовое внутреннее устройство любого современного поискового движка. Про сжатые списки документов и позиций, как затем с ними работает поиск совпадающих документов (и разные операторы), как устроено ранжирование найденных документов, как бывают устроены и работают с фильтрацией и агрегацией дополнительные (нетекстовые) атрибуты документов. По возможности, упоминание всех известных вариантов реализаций (как, вообще, можно, как сделано в Sphinx, как в Lucene).
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Yandex
2 июля 2012, Я.Субботник в Екатеринбурге
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верстальщики Яндекса"
О докладе:
«Куда идём мы с Пятачком, большой-большой секрет, и не расскажем мы о нём...», но сегодня мы расскажем куда идёт верстка и верстальщики Яндекса, какими современными технологиями мы уже пользуемся, а на какие активно засматриваемся.
Обзорный доклад про базовое внутреннее устройство любого современного поискового движка. Про сжатые списки документов и позиций, как затем с ними работает поиск совпадающих документов (и разные операторы), как устроено ранжирование найденных документов, как бывают устроены и работают с фильтрацией и агрегацией дополнительные (нетекстовые) атрибуты документов. По возможности, упоминание всех известных вариантов реализаций (как, вообще, можно, как сделано в Sphinx, как в Lucene).
Почему оно не находится! / Андрей Аксенов (Sphinx)Ontico
HighLoad++ 2017
Зал «Конгресс-Холл», 7 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/3000.html
...и что сделать, чтобы уже находилось?
И снова про качество поиска. Поменьше скучной теории (ну, чтобы не более 60%); больше практических примеров. Как оценить типа-качество "на пальцах"; почему это плохая идея. Как построить оценивалку; насколько это просто; где взять готовую (нигде); зачем человечеству Толока или Mechanical Turk.
...
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 11:00
Тезисы:
http://www.highload.ru/2017/abstracts/2998.html
Ловко придумать схему сжатия для своих данных умеют не все, а очень зря. Иногда (иногда) при помощи этой магии удается добиться как бы невозможного: одновременно и сэкономить диск или память, и при этом ускорить код.
Как работает магия сжатия в целом? Как она работает более конкретно в очень разных продуктах: "просто базах" типа MySQL или Mongo; в поисковиках типа Lucene или Sphinx (или даже веб-поисках); в колоночных хранилищах типа Vertica или Clickhouse; в конце концов, внутри апдейтов Chrome?
...
Andrew Aksyonoff "Архитектура вокруг поиска"Fwdays
Начиная с определенного масштаба, вокруг любого базового поискового движка плюс рядом с ним неизбежно вырастает изрядная куча всяких интересных прослоек и сервисов. Особенно, когда одним лишь поиском по ключевым словам (либо вообще булевым, либо с простеньким ранжированием по формуле) дело ограничиваться перестает. Расскажу, как сегодня выглядит архитектура сервисов “вокруг и около поиска” у нас в Авито (числа и слова для привлечения внимания: 40M+ активных объявлений, тысячи RPS, ML ранжирование, пляски с анализом и доставкой данных, и всё такое).
Сжимать данные бывает зверски эффективно, но умеют далеко не все. Устроим поверхностный обзор современных алгоритмов сжатия, слегка обсудим методы изнутри MySQL, Mongo, Clickhouse и прочего. Устроим подробный разбор особо простых, однако всё равно эффективных методов, причем ловко применимых где угодно от plain C до JavaScript.
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Ontico
За 15 лет разработки концепция немного поменялась и, начиная со Sphinx 3.0, мы теперь, если задуматься, вполне себе самостоятельная распределенная база (с фокусом на полнотекстовый поиск), а не только лишь добавочный к основному хранилищу поисковый движок.
Порядка 2 лет уже пилим ряд больших внутренних переделок под флагом 3.0 и, вот, наконец-то, доделываем. (На момент подачи тезисов "наполовину" готов новый клевый формат индекса; к моменту проведения конференции рассчитываем выложить публично доступную альфу).
Уже приделано всякое интересное:
* новый формат индекса, компактный и быстрый (в разы быстрее индексация и поиск);
* дисковое хранилище для документов и всяких спец. данных;
* полноценные B-tree индексы по атрибутам;
* репликация индексов.
Сделаю краткий обзор внутренней реализации этого всего, расскажу, как мы переложили битики и байтики, и что и почему это дало функционально.
Бенчмарков "а почему не Elastic" сделать не успеем, для этого нужны добровольцы. Добровольцы, подайте 1 громкий зеленый email вверх.
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
Какая вообще в природе бывает репликация (sync vs. async vs. semisync, master-master vs. master-slave), как оно устроено конкретно в MySQL, в каких версиях что добавили. Про binary/relay log, про SBR/RBR/mixed форматы, про глупости с позициями и про GTID, про то, как из-за всяких бед возникают дополнительные продукты типа Tungsten и Galera. Несколько занятных фактов и парочка фокусов, которые можно учинять конкретно с MySQL-репликацией.
Доклад вчистую про внутреннее устройство, по результатам должно появляться общее понимание того, как оно работает внутри и почему именно так. Конкретные SQL-операторы подробно рассматривать НЕ будем, эти скучные мелочи необходимо будет затем самостоятельно смотреть в документации (или не смотреть).
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
Расскажем о самых распространенных технологиях и алгоритмах добычи критичной для бизнеса информации из больших массивов данных. Отдельно коснемся темы рекомендательных сервисов и их эффективного применения.
План:
1) Откуда брать данные, тренды и концепции.
2) Основные алгоритмы и технологии их применения для обработки массивов данных: MapReduce, Spark.
3) Методика создания рекомендательного сервиса — этапы от концепции до работающей системы.
Видео: https://www.youtube.com/watch?v=IUtbbN9aevU
Веб-приложения становятся все больше и сложнее, так что многое остается вне нашего поля зрения. Поэтому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи решать, что необходимо для их создания.
SPA Meetup, 28 февраля 2015, Москва, Авито
Почему оно не находится! / Андрей Аксенов (Sphinx)Ontico
HighLoad++ 2017
Зал «Конгресс-Холл», 7 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/3000.html
...и что сделать, чтобы уже находилось?
И снова про качество поиска. Поменьше скучной теории (ну, чтобы не более 60%); больше практических примеров. Как оценить типа-качество "на пальцах"; почему это плохая идея. Как построить оценивалку; насколько это просто; где взять готовую (нигде); зачем человечеству Толока или Mechanical Turk.
...
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 11:00
Тезисы:
http://www.highload.ru/2017/abstracts/2998.html
Ловко придумать схему сжатия для своих данных умеют не все, а очень зря. Иногда (иногда) при помощи этой магии удается добиться как бы невозможного: одновременно и сэкономить диск или память, и при этом ускорить код.
Как работает магия сжатия в целом? Как она работает более конкретно в очень разных продуктах: "просто базах" типа MySQL или Mongo; в поисковиках типа Lucene или Sphinx (или даже веб-поисках); в колоночных хранилищах типа Vertica или Clickhouse; в конце концов, внутри апдейтов Chrome?
...
Andrew Aksyonoff "Архитектура вокруг поиска"Fwdays
Начиная с определенного масштаба, вокруг любого базового поискового движка плюс рядом с ним неизбежно вырастает изрядная куча всяких интересных прослоек и сервисов. Особенно, когда одним лишь поиском по ключевым словам (либо вообще булевым, либо с простеньким ранжированием по формуле) дело ограничиваться перестает. Расскажу, как сегодня выглядит архитектура сервисов “вокруг и около поиска” у нас в Авито (числа и слова для привлечения внимания: 40M+ активных объявлений, тысячи RPS, ML ранжирование, пляски с анализом и доставкой данных, и всё такое).
Сжимать данные бывает зверски эффективно, но умеют далеко не все. Устроим поверхностный обзор современных алгоритмов сжатия, слегка обсудим методы изнутри MySQL, Mongo, Clickhouse и прочего. Устроим подробный разбор особо простых, однако всё равно эффективных методов, причем ловко применимых где угодно от plain C до JavaScript.
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Ontico
За 15 лет разработки концепция немного поменялась и, начиная со Sphinx 3.0, мы теперь, если задуматься, вполне себе самостоятельная распределенная база (с фокусом на полнотекстовый поиск), а не только лишь добавочный к основному хранилищу поисковый движок.
Порядка 2 лет уже пилим ряд больших внутренних переделок под флагом 3.0 и, вот, наконец-то, доделываем. (На момент подачи тезисов "наполовину" готов новый клевый формат индекса; к моменту проведения конференции рассчитываем выложить публично доступную альфу).
Уже приделано всякое интересное:
* новый формат индекса, компактный и быстрый (в разы быстрее индексация и поиск);
* дисковое хранилище для документов и всяких спец. данных;
* полноценные B-tree индексы по атрибутам;
* репликация индексов.
Сделаю краткий обзор внутренней реализации этого всего, расскажу, как мы переложили битики и байтики, и что и почему это дало функционально.
Бенчмарков "а почему не Elastic" сделать не успеем, для этого нужны добровольцы. Добровольцы, подайте 1 громкий зеленый email вверх.
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
Какая вообще в природе бывает репликация (sync vs. async vs. semisync, master-master vs. master-slave), как оно устроено конкретно в MySQL, в каких версиях что добавили. Про binary/relay log, про SBR/RBR/mixed форматы, про глупости с позициями и про GTID, про то, как из-за всяких бед возникают дополнительные продукты типа Tungsten и Galera. Несколько занятных фактов и парочка фокусов, которые можно учинять конкретно с MySQL-репликацией.
Доклад вчистую про внутреннее устройство, по результатам должно появляться общее понимание того, как оно работает внутри и почему именно так. Конкретные SQL-операторы подробно рассматривать НЕ будем, эти скучные мелочи необходимо будет затем самостоятельно смотреть в документации (или не смотреть).
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
Расскажем о самых распространенных технологиях и алгоритмах добычи критичной для бизнеса информации из больших массивов данных. Отдельно коснемся темы рекомендательных сервисов и их эффективного применения.
План:
1) Откуда брать данные, тренды и концепции.
2) Основные алгоритмы и технологии их применения для обработки массивов данных: MapReduce, Spark.
3) Методика создания рекомендательного сервиса — этапы от концепции до работающей системы.
Видео: https://www.youtube.com/watch?v=IUtbbN9aevU
Веб-приложения становятся все больше и сложнее, так что многое остается вне нашего поля зрения. Поэтому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи решать, что необходимо для их создания.
SPA Meetup, 28 февраля 2015, Москва, Авито
2. КТО ЗДЕСЬ
• Зовут Андрей, резидент HL, 3 клона ;)
• Делал вебню, игры, поиск
• Знаю много страшных слов
• Вчера про “скорость” в целом
• Сейчас про “поиск” в целом
• Ничего нового, все украдено, explicit lyrics
3. О чем речь
• Не про Sphinx
• Не про Lucene
• Не про Yandex
• Не про Google
• Не про науку
• Не про рынок
• Обзор про технологию
4.
5. О чем речь 2.0
• Не про библиотеки бумажных книг
• Не про уголовный розыск
• Не про поиск отпечатков пальцев
• Не про скоростной выбор парных носков
• Не про поиск по картинкам
• Не про идентификацию песен и видео
• Про старый добрый тупой поиск по тексту
7. 4 условные стадии
• Сбор данных
– Например, web crawling, сканирование, итп
– Пропустим для ясности!!!
• Индексация
• Поиск
• Масштабирование
– Агрегация, репликация, HA, LB, итп
9. Как устроена индексация
• Экстракция текста
– PDF, HTML, … -> текст
• Токенизация
– Разваливаем текст на токены
• Морфологическая обработка
– Стемминг либо лемматизация, POS, WSD, …
• Создание инвертированного индекса
11. “Движок” за 15 минут
CREATE TABLE mysearchindex (
keyword VARCHAR(255) NOT NULL,
docid INTEGER NOT NULL,
UNIQUE(keyword, docid) );
/* а можно даже в MS Word! */
/* но есть нюанс… */
12.
13.
14. Чем слегка уступает наш “движок”?
• [+] Ключевые слова ведь найдены!!!
• [-] Эффективность?
• Память? Диск? Процессор
• [-] Ранжирование?
• [-] Сортировка?
• [-] Морфология?
• [-] Семантика?
• Не, не слышал
16. Чуть подробнее про индекс
• Словарь + списки документов + позиций
• Абыр => [ <123, {10,20,30…}> ]
• Валг => [ <123, {7,21,47…} ]
• …
17. Про эффективность
• Keyword + docid в базе = ?
– Все (!) копии слов по много (!) раз
– 4-8 байт на docid
– 4 байта на позицию
– Умножить на 2 с небольшим для индекса
• Итого = несколько раз от размера текста
• Особенно если с позициями итп POS
25. Как устроен запрос
• Matching = найти
• Ranking = отранжировать
• Разные требования
– Ad-hoc веб поиск
– Химера “поиска на естественном языке”
– Data mining, поиск по юридическим текстам
– Поиск на разных (!) языках
26. Matching
• Простая часть!!!
• По тексту – и не по текст
– … WHERE MATCH(‘new ways to think’)
– AND year BETWEEN 1950 AND 1970
• По тексту – операции над списками
• Где нет – либо тоже, либо по атрибутам
• Похоже на базу – но таки иначе
– Early termination, эффективный UNION/MINUS,
etc
27. Ranking
• Сложная часть
• Проблема в общем формально нерешаемая
• Но практически таки да ;)
• Человеческие оценки
• Без них, увы, никуда
• Метрики качества
• P, R, AP, MAP, NDCG, Bpref, ERR…)
28. Например, precision
• Запрос Sphinx
• Стоит в египте статуя Сфинкса …
• Sphinx Guns | Buy Online | Free Shipping!
• Задокументируй одноглазую змею | Sphinx
(url = http://sphinx.blablabla.com)
• А что вы знаете о бабочках-Сфинксах?
• Процент попаданий = precision
• Увы, не учитывается порядок
29. Например, average precision
• Давайте учтем порядок!
• Pos 1 = weight 0.5
• Pos 2 = weight 0.25
• Pos 3 = weight 0.125
• …
• NB: ЭТИ ВЕСА АБСОЛЮТНО НЕВЕРНЫ
• Давайте усредним кучу запросов!
• И вот… ЦЕЛЬ!