SlideShare a Scribd company logo
1 of 58
Индексируй неиндексирумое
Рахматиллаев Тимур
ByndyuSoft
twitter.com/eskat0n
6-я конференция .NET разработчиков
28 апреля 2013
www.dotnetconf.ru
2Индексируй неиндексируемое
Разминка
1. Скачать материалы по ссылке:
http://bit.ly/dotnetconf6-sphinx
2. Проверить наличие
установленной Visual Studio
2010+
3. Установить ReSharper 7.х
(настоятельно рекомендуется,
но не обязательно)
3Индексируй неиндексируемое
Ожидания от мастер-класса
4Индексируй неиндексируемое
Немного философии
5Индексируй неиндексируемое
В начале была проблема
Организовать быстрый и лексический
многокритериальный поиск среди данных,
хранящихся в СУБД (в общем случае –
любом произвольном хранилище)
6Индексируй неиндексируемое
Но зачем, ведь есть…
Стандартные средства поиска
• Для реляционных СУБД
• SQL-запросы с WHERE-условиями, операторы LIKE, IN
и BETWEEN
• Полнотекстовые движки, встроенные в СУБД
– MySQL Fulltext
– PostgreSQL Textsearch
– MS SQL Fulltext Filter Daemon
• Для NoSQL СУБД
• Собственные механизмы поиска на основе языка
запросов и (как правило) встроенного
индексирующего движка
7Индексируй неиндексируемое
Недостатки «родных» решений на
основе хранилища данных
1. Зависимость логики работы поиска от
контейнера хранения данных
2. Низкая функциональность с точки зрения
поддержки сложных условий в поисковом
запросе
3. Низкая скорость работы
4. Слабое лексическое обеспечение
8Индексируй неиндексируемое
«Родные» решения
1. Просты и быстры в освоении
2. Идеальны для систем с низкими
требования ко времени отклика при
поиске
3. Хороши для систем с малым объемом
данных
4. Не усложняют инфраструктуру и не
увеличивают сложность поддержки
системы (см. п.2 и п.3)
9Индексируй неиндексируемое
Все хорошо, пока у вас…
10Индексируй неиндексируемое
Используйте то, что проще
11Индексируй неиндексируемое
Но что, если…
Иголка
12Индексируй неиндексируемое
<картинка_для_шутки_юмора>
13Индексируй неиндексируемое
Сложные формы поиска
14Индексируй неиндексируемое
Много данных
15Индексируй неиндексируемое
Требуется быстрый поиск
16Индексируй неиндексируемое
Механизмы полнотекстового
поиска
• Движки («чистые»)
• Xapian
• CLucene
• Интегрированные
• MySQL Fulltext
• PostgreSQL Textsearch
• MS SQL Fulltext Filter Daemon
• Сервера
• Sphinx
• Apache Solr (Lucene)
17Индексируй неиндексируемое
Механизмы полнотекстового
поиска
• Движки («чистые»)
• Xapian
• CLucene
• Интегрированные
• MySQL Fulltext
• PostgreSQL Textsearch
• MS SQL Fulltext Filter Daemon
• Сервера
• Sphinx
• Apache Solr (Lucene)
18Индексируй неиндексируемое
Механизмы полнотекстового
поиска
• Движки («чистые»)
• Xapian
• CLucene
• Интегрированные
• MySQL Fulltext
• PostgreSQL Textsearch
• MS SQL Fulltext Filter Daemon
• Сервера
• Sphinx
• Apache Solr (Lucene)
19Индексируй неиндексируемое
«Чистые» движки поиска
1. Библиотеки с программными биндингами
под различные языки (C++, Java, C#...)
2. Высокие возможности для
конфигурирования
3. Присутствуют интересные
функциональные особенности
4. Удобны для использования в desktop-
приложениях
20Индексируй неиндексируемое
Механизмы полнотекстового
поиска
• Движки («чистые»)
• Xapian
• CLucene
• Интегрированные
• MySQL Fulltext
• PostgreSQL Textsearch
• MS SQL Fulltext Filter Daemon
• Сервера
• Sphinx
• Apache Solr (Lucene)
21Индексируй неиндексируемое
Достоинства
1. Привычная архитектура клиент-сервер
2. Удобство развертывания и интеграции
3. Простота взаимодействия
4. Возможность линейного количественного
повышения производительности
22Индексируй неиндексируемое
Принцип работы сервера
полнотекстового поиска
Сеть
Движок поиска
Веб-сервер
Индекс документов
• HTTP (JSON, XML)
• Проприетарный протокол
• Мимикрия под SQL СУБД
(набор файлов)
23Индексируй неиндексируемое
Apache Solr
• Движок поиска – Lucene
• Интерфейс к движку выполнен в виде
Java-сервлета, запускаемого в контейнере
Apache Tomcat
• Взаимодействие через XML/JSON/CSV-
протокол
• Встроенные средства графического
администрирования
• Огромная расширяемость
24Индексируй неиндексируемое
Sphinx
• Собственный движок поиска
• Выполнен в виде консольного
приложения и умеет возможность
установки в виде Windows-сервиса или
демона
• Взаимодействие по собственному
протоколу или по протоколу
MySQL/PostgreSQL
25Индексируй неиндексируемое
Принцип работы сервера
полнотекстового поиска
Сеть
Движок поиска
Веб-сервер
Индекс документов
26Индексируй неиндексируемое
Индекс документов
• Структура данных, обеспечивающая
поиск по набору записей по заданным
критериям
• Единичная запись в индексе – документ
• Документ имеет уникальный
идентификатор
• Основная задача поиска в индексе –
получение набора идентификаторов
найденных документов
27Индексируй неиндексируемое
Типы индексов
• Инвертированный
• Каждому слову из множества слов,
являющихся объединением множеств слов
каждого документа сопоставляется набор
документов, в которых оно встречается
• Прямой
• Каждому документу сопоставляется набор
слов, которые он содержит
28Индексируй неиндексируемое
Типы индексов
• Инвертированный
• Каждому слову из множества слов,
являющихся объединением множеств слов
каждого документа сопоставляется набор
документов, в которых оно встречается
• Прямой
• Каждому документу сопоставляется набор
слов, которые он содержит
29Индексируй неиндексируемое
Инвертированный индекс
Слово1 Слово2 Слово3 Слово4
Документ1
Документ2
Документ3
Документ2
Документ3
Документ1 Документ1
Документ3
30Индексируй неиндексируемое
Инвертированный индекс
Слово1 Слово2 Слово3 Слово4
Документ1
Документ2
Документ3
Документ2
Документ3
Документ1 Документ1
Документ3
31Индексируй неиндексируемое
Инвертированный индекс
Слово1 Слово2 Слово3 Слово4
Документ1
Документ2
Документ3
Документ2
Документ3
Документ1 Документ1
Документ3
32Индексируй неиндексируемое
Инвертированный индекс
Слово1 Слово2 Слово3 Слово4
Документ1
Документ2
Документ3
Документ2
Документ3
Документ1 Документ1
Документ3
33Индексируй неиндексируемое
Стемминг
• Процесс получения инфинитива слова по
его производной форме
• Утилита (библиотека) производящая
стемминг называется «стеммер»
• Индексируются начальные формы слов
• Возможна индексация точных форм слов
(без стемминга, крайне увеличивает
размер индекса)
34Индексируй неиндексируемое
Типы индексов
• Префиксный
• Позволяет искать слова, начинающиеся на
заданное
• чело* -> человек
• Инфиксный
• Позволяет искать слова, оканчивающиеся на
заданное
• *век -> человек
35Индексируй неиндексируемое
Типы индексов
• Префиксный
• Позволяет искать слова, начинающиеся на
заданное
• Инфиксный
• Позволяет искать слова, оканчивающиеся на
заданное
36Индексируй неиндексируемое
Логическая структура индекса
Идентификатор
документа
Поля Атрибуты
1 Поля документа 1 Атрибуты документа 1
2 Поля документа 2 Атрибуты документа 2
3 Поля документа 3 Атрибуты документа 3
… … …
37Индексируй неиндексируемое
Поля в документе
• Не хранят данных
• Предназначены для организации поиска
по текстовым/числовым данным
38Индексируй неиндексируемое
Атрибуты документа
• Предназначены для хранения данных и
поиска по ним
• Как правило, поддерживают числовые и
строковые типы данных
• Представляют собой любые данные,
ассоциированные с документов
39Индексируй неиндексируемое
Multi-valued attributes
• Атрибуты, которые представляют собой
неупорядочные наборы однотипных
значений, ассоциированные с документов
• Крайне удобны для индексирования
реляционной структуры данных
40Индексируй неиндексируемое
Техническая структура индекса
• B-деревья
• B+-деревья
• GIN (General INverted INdex)
41Индексируй неиндексируемое
Построение индекса
• Процесс построения индекса –
индексация
• Индексация подразумевает полную
перестройку индекса «с нуля»
• Как правило индексация выполняется
отдельной утилитой, входящей в комплект
поставки поискового движка
42Индексируй неиндексируемое
Построение индекса
1. Получение единичной записи о
документе из внешнего хранилища
2. Получение данных для его полей
3. Получение данных для его атрибутов
4. Запись документа в индекс
5. …
6. PROFIT
43Индексируй неиндексируемое
Когда индексировать?
44Индексируй неиндексируемое
Когда индексировать?
• Когда во внешнем хранилище были
изменены проиндексированные
документы
• Когда из внешнего хранилища были
удалены проиндексированные документы
• Когда во внешнее хранилище были
добавлены документы
45Индексируй неиндексируемое
Дельта-индексирование
• Процесс индексирования, целью которого
является минимизация:
• Времени «реагирования» индекса на изменения
во внешнем хранилище
• Нагрузки на внешнее хранилище по получению
из него данных для последующей индексации
• Заключается в индексации только
добавленных/измененных документов и
исключении из индекса удаленных
документов
46Индексируй неиндексируемое
Дельта-индексирование
• Дельта – набор
добавленны/измененных/удаленных
документов
• Критерии формирования дельты
• Timestamp’ы
• Идентификаторы
• Очереди сообщений
• …
47Индексируй неиндексируемое
Индексы реального времени
• Индекс, в который доступна запись документов
в произвольный момент времени
48Индексируй неиндексируемое
Что включать в индекс?
49Индексируй неиндексируемое
Что включать в индекс?
• Структуру индекса определяет поисковый
запрос, для которого он предназначен
• Грубо говоря, в терминах веб-
приложения индекс должен содержать
набор и полей и атрибутов,
сопоставляемый поисковой форме
50Индексируй неиндексируемое
Сравнение Sphinx и Apache Solr
Sphinx Apache Solr
Скорость индексации 4.5 Мб/с 2.75 Мб/с
Скорость поиска 7 мс / 75 мс 25 мс / 212 мс
Размер индекса 30% 20%
Интерфейс API, SQL Веб-сервис
Стеммеры 15 31
Стоп-слова, синонимы Да Да
Soundex Да Да
Подсветка Да Да
Скорость поиска: 3 слова, 5 потоков, 1000 результатов, среднее/максимальное
время на запрос
51Индексируй неиндексируемое
Особенности Sphinx
1. Высокая скорость индексации
2. Высокая скорость поиска
3. Высокая масштабируемость
4. Распределенная возможность поиска
5. Поддержка нескольких полей полнотекстового поиска в
документе
6. Поддержка нескольких дополнительных атрибутов для
каждого документа
7. Поддержка стоп-слов
8. Поддержка однобайтовых кодировок и UTF-8
9. Поддержка морфологического поиска
10. Родная поддержка MySQL, PostgreSQL и
поддержка ODBC совместимых баз данных
52Индексируй неиндексируемое
Числовые показатели
производительности
1. Скорость индексации
до 10-15 МБ/сек на ядро (средняя 4.5 МБ/сек по результатам теста с
вычиткой данных)
2. Скорость поиска
до 150—250 запросов в секунду на каждое ядро с 1 000 000
документов (3 слова, 5 потоков, 1000 документов в среднем ищет
за 7 мс по результатам теста)
3. Размер индекса
30% от данных (без поддержки инфиксного поиска)
4. Высокая масштабируемость
Крупнейший известный кластер индексирует до 3 000 000 000
документов и поддерживает более 50 миллионов запросов в день
53Индексируй неиндексируемое
Конфигурирование Sphinx
• Основной конфигурационный файл –
sphinx.conf
• Параметры командной строки при
запуске sphinxd.exe
• Список словоформ замены –
wordforms.txt
• Является прямым указанием стеммеру
• Применяется на этапе индексации (sic!)
54Индексируй неиндексируемое
Типы атрибутов Sphinx
• Целые числа (от 1 до 32 бит)
• UNIX timestamps
• Числа с плавающей точкой (32 бита)
• Строки
• MVA (списки произвольной длины,
содержащие целые числа длиной в 32
бита)
55Индексируй неиндексируемое
Операции над индексами
• Ротация
• Объединение
• Объединение с использованием killlist
56Индексируй неиндексируемое
Мы начинаем КВН мастер-класс…
«Хватит трепаться,
покажите мне код»
Линус Торвальдс
57Индексируй неиндексируемое
Дальнейшее изучение
Introduction to Search with Sphinx
http://sphinxsearch.com/docs/
Официальная документация:
Andrew Aksyonoff
58Индексируй неиндексируемое
Спасибо за внимание
Рахматиллаев Тимур
ByndyuSoft
mail@eskat0n.ru
twitter.com/eskat0n

More Related Content

What's hot

15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...Vladislav Morgun
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicVadim Tsesko
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1Technopark
 
Автоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийАвтоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийBadoo Development
 
Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Oleg Kwerty
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...IT-Portfolio
 
Distributed erlang
Distributed erlangDistributed erlang
Distributed erlangYuri Zhloba
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Mail.ru Group
 

What's hot (16)

15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
Автоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийАвтоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделений
 
Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
 
Distributed erlang
Distributed erlangDistributed erlang
Distributed erlang
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
 

Viewers also liked

Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Ontico
 
системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжинирингAleksandr Barmin
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды WebDrupalSib
 
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Uzbekistan Rugby Federation
 
Lucene in odnoklassniki.ru
Lucene in odnoklassniki.ruLucene in odnoklassniki.ru
Lucene in odnoklassniki.ruDmitry Buzdin
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиDrupalSib
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийaragozin
 
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.Alexander Byndyu
 
Не SQL'ем единым
Не SQL'ем единымНе SQL'ем единым
Не SQL'ем единымAlexander Byndyu
 
Много данных, много вычислений: есть ли жизнь на Amazon'е
Много данных, много вычислений: есть ли жизнь на Amazon'еМного данных, много вычислений: есть ли жизнь на Amazon'е
Много данных, много вычислений: есть ли жизнь на Amazon'еAlexander Byndyu
 
Data mining в реальном проекте
Data mining в реальном проектеData mining в реальном проекте
Data mining в реальном проектеAlexander Byndyu
 
Клиентская оптимизация в ритме военного марша
Клиентская оптимизация в ритме военного маршаКлиентская оптимизация в ритме военного марша
Клиентская оптимизация в ритме военного маршаAlexander Byndyu
 
Бутылка саке и муравей
Бутылка саке и муравейБутылка саке и муравей
Бутылка саке и муравейAlexander Byndyu
 
Смотрим на Mvvm сквозь prism'у
Смотрим на Mvvm сквозь prism'уСмотрим на Mvvm сквозь prism'у
Смотрим на Mvvm сквозь prism'уAlexander Byndyu
 
код шрёдингера
код шрёдингеракод шрёдингера
код шрёдингераRuslan Safin
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETAlexander Byndyu
 
Непрерывная интеграция в ритме военного марша
Непрерывная интеграция в ритме военного маршаНепрерывная интеграция в ритме военного марша
Непрерывная интеграция в ритме военного маршаAlexander Byndyu
 
RabbitMQ - обмен сообщениями, который просто работает
RabbitMQ - обмен сообщениями, который просто работаетRabbitMQ - обмен сообщениями, который просто работает
RabbitMQ - обмен сообщениями, который просто работаетAlexander Byndyu
 

Viewers also liked (20)

Cambio climático: tenemos que unir la lucha social y la climática
Cambio climático: tenemos que unir la lucha social y la climáticaCambio climático: tenemos que unir la lucha social y la climática
Cambio climático: tenemos que unir la lucha social y la climática
 
code4russia
code4russiacode4russia
code4russia
 
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
 
системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжиниринг
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды Web
 
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
 
Lucene in odnoklassniki.ru
Lucene in odnoklassniki.ruLucene in odnoklassniki.ru
Lucene in odnoklassniki.ru
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решений
 
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
 
Не SQL'ем единым
Не SQL'ем единымНе SQL'ем единым
Не SQL'ем единым
 
Много данных, много вычислений: есть ли жизнь на Amazon'е
Много данных, много вычислений: есть ли жизнь на Amazon'еМного данных, много вычислений: есть ли жизнь на Amazon'е
Много данных, много вычислений: есть ли жизнь на Amazon'е
 
Data mining в реальном проекте
Data mining в реальном проектеData mining в реальном проекте
Data mining в реальном проекте
 
Клиентская оптимизация в ритме военного марша
Клиентская оптимизация в ритме военного маршаКлиентская оптимизация в ритме военного марша
Клиентская оптимизация в ритме военного марша
 
Бутылка саке и муравей
Бутылка саке и муравейБутылка саке и муравей
Бутылка саке и муравей
 
Смотрим на Mvvm сквозь prism'у
Смотрим на Mvvm сквозь prism'уСмотрим на Mvvm сквозь prism'у
Смотрим на Mvvm сквозь prism'у
 
код шрёдингера
код шрёдингеракод шрёдингера
код шрёдингера
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NET
 
Непрерывная интеграция в ритме военного марша
Непрерывная интеграция в ритме военного маршаНепрерывная интеграция в ритме военного марша
Непрерывная интеграция в ритме военного марша
 
RabbitMQ - обмен сообщениями, который просто работает
RabbitMQ - обмен сообщениями, который просто работаетRabbitMQ - обмен сообщениями, который просто работает
RabbitMQ - обмен сообщениями, который просто работает
 

Similar to Индексируй неиндексирумое

Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеTimur Rakhmatillaev
 
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Ontico
 
13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексированиеEvgeniy Golendyhin
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Sergey Tihon
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Yandex
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
презентация рамдок
презентация рамдокпрезентация рамдок
презентация рамдокRAMEC
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорAlexander Byndyu
 
Подводные камни при внедрении электронного архива и оцифровке документов
Подводные камни при внедрении электронного архива и оцифровке документовПодводные камни при внедрении электронного архива и оцифровке документов
Подводные камни при внедрении электронного архива и оцифровке документовLANIT
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as CodeIgor Kurochkin
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parseryalegko
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchVitebsk Miniq
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 

Similar to Индексируй неиндексирумое (20)

Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
 
13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексирование
 
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
Natural Language Processing (NLP) with .NET for #dotnetby meetup-29
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
презентация рамдок
презентация рамдокпрезентация рамдок
презентация рамдок
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Sphinx
SphinxSphinx
Sphinx
 
Team workflow
Team workflowTeam workflow
Team workflow
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
 
Подводные камни при внедрении электронного архива и оцифровке документов
Подводные камни при внедрении электронного архива и оцифровке документовПодводные камни при внедрении электронного архива и оцифровке документов
Подводные камни при внедрении электронного архива и оцифровке документов
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parser
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate Search
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 

More from Alexander Byndyu

Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Alexander Byndyu
 
Применение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеПрименение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеAlexander Byndyu
 
Антихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияАнтихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияAlexander Byndyu
 
Карта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияКарта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияAlexander Byndyu
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиAlexander Byndyu
 
История о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаИстория о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаAlexander Byndyu
 
Шпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяШпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяAlexander Byndyu
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияAlexander Byndyu
 
IT-директор на аутсорсе
IT-директор на аутсорсеIT-директор на аутсорсе
IT-директор на аутсорсеAlexander Byndyu
 
Бизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруБизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруAlexander Byndyu
 
Impact Mapping на практике v2
Impact Mapping на практике v2Impact Mapping на практике v2
Impact Mapping на практике v2Alexander Byndyu
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаAlexander Byndyu
 
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовПять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовAlexander Byndyu
 
Пять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовПять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовAlexander Byndyu
 
Impact mapping in practice
Impact mapping in practiceImpact mapping in practice
Impact mapping in practiceAlexander Byndyu
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практикеAlexander Byndyu
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистовAlexander Byndyu
 
ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!Alexander Byndyu
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойAlexander Byndyu
 

More from Alexander Byndyu (20)

Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
 
Применение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзеПрименение low-code платформ в энтерпрайзе
Применение low-code платформ в энтерпрайзе
 
Антихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить измененияАнтихрупкость в IT или как полюбить изменения
Антихрупкость в IT или как полюбить изменения
 
Карта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планированияКарта гипотез как метод стратегического планирования
Карта гипотез как метод стратегического планирования
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
 
История о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проектаИстория о том, как техническое задание подменяет цель проекта
История о том, как техническое задание подменяет цель проекта
 
Шпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателяШпаргалка по IT-миру для предпринимателя
Шпаргалка по IT-миру для предпринимателя
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
 
IT-директор на аутсорсе
IT-директор на аутсорсеIT-директор на аутсорсе
IT-директор на аутсорсе
 
Бизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуруБизнес-гибкость через микросервисную архитектуру
Бизнес-гибкость через микросервисную архитектуру
 
Impact Mapping на практике v2
Impact Mapping на практике v2Impact Mapping на практике v2
Impact Mapping на практике v2
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продукта
 
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктовПять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска продуктов
 
Пять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектовПять самых важных составляющих процесса выпуска проектов
Пять самых важных составляющих процесса выпуска проектов
 
Час Кода 2015
Час Кода 2015Час Кода 2015
Час Кода 2015
 
Impact mapping in practice
Impact mapping in practiceImpact mapping in practice
Impact mapping in practice
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практике
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистов
 
ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 

Индексируй неиндексирумое