SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Timur Rakhmatillaev
 
системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжинирингAleksandr Barmin
 
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Ontico
 
Александр Воинов - Тренды 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
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыYandex
 
Строим плот - Как не утонуть в данных
Строим плот - Как не утонуть в данныхСтроим плот - Как не утонуть в данных
Строим плот - Как не утонуть в данныхVitebsk Miniq
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
Облачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeОблачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeLeonid Vygovskiy
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)Ontico
 

Destaque (20)

Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)Построение гибкого процесса разработки (3 курс)
Построение гибкого процесса разработки (3 курс)
 
системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжиниринг
 
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 решений
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформы
 
Строим плот - Как не утонуть в данных
Строим плот - Как не утонуть в данныхСтроим плот - Как не утонуть в данных
Строим плот - Как не утонуть в данных
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Облачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeОблачная инфраструктура Amazon We
Облачная инфраструктура Amazon We
 
Outsourcing Saas
Outsourcing SaasOutsourcing Saas
Outsourcing Saas
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
Fluent OpenXML - Foxby
Fluent OpenXML - FoxbyFluent OpenXML - Foxby
Fluent OpenXML - Foxby
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Orion Two MKK 09-04-2015
Orion Two MKK 09-04-2015Orion Two MKK 09-04-2015
Orion Two MKK 09-04-2015
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
 

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

13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексированиеEvgeniy Golendyhin
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
06 Архитектура информационных систем. Паттерны и фреймворки
06 Архитектура информационных систем. Паттерны и фреймворки06 Архитектура информационных систем. Паттерны и фреймворки
06 Архитектура информационных систем. Паттерны и фреймворкиEdward Galiaskarov
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Ранжирование: от строчки кода до Матрикснета
Ранжирование:  от строчки кода до МатрикснетаРанжирование:  от строчки кода до Матрикснета
Ранжирование: от строчки кода до Матрикснетаyaevents
 
20131112федорроманенко
20131112федорроманенко20131112федорроманенко
20131112федорроманенкоYandex
 
Spcua 2013 кожемякин-алексей
Spcua 2013 кожемякин-алексейSpcua 2013 кожемякин-алексей
Spcua 2013 кожемякин-алексейAlex Kozhemiakin
 
20131105 романенко
20131105 романенко20131105 романенко
20131105 романенкоYandex
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskMODX Беларусь
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...IBSchool Интернет-Бизнес школа
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Yandex
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Mykhailo Poliarush
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.Информационный поиск. Инвертированный индекс. Обработка булевых запросов.
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.Denis Samoylov
 
SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016Yuriy Khait
 
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
 
Meet up khabarovsk_ifind
Meet up khabarovsk_ifindMeet up khabarovsk_ifind
Meet up khabarovsk_ifindElena Ometova
 

Semelhante a Индексируй неиндексирумое (20)

13 14 15_индексирование
13 14 15_индексирование13 14 15_индексирование
13 14 15_индексирование
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
06 Архитектура информационных систем. Паттерны и фреймворки
06 Архитектура информационных систем. Паттерны и фреймворки06 Архитектура информационных систем. Паттерны и фреймворки
06 Архитектура информационных систем. Паттерны и фреймворки
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Ранжирование: от строчки кода до Матрикснета
Ранжирование:  от строчки кода до МатрикснетаРанжирование:  от строчки кода до Матрикснета
Ранжирование: от строчки кода до Матрикснета
 
20131112федорроманенко
20131112федорроманенко20131112федорроманенко
20131112федорроманенко
 
Spcua 2013 кожемякин-алексей
Spcua 2013 кожемякин-алексейSpcua 2013 кожемякин-алексей
Spcua 2013 кожемякин-алексей
 
20131105 романенко
20131105 романенко20131105 романенко
20131105 романенко
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...
Анализ проблем сайта. Обзор инструментов. - Внутренняя оптимизация сайтов с I...
 
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python?
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.Информационный поиск. Инвертированный индекс. Обработка булевых запросов.
Информационный поиск. Инвертированный индекс. Обработка булевых запросов.
 
SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016
 
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
 
AskNet Search
AskNet SearchAskNet Search
AskNet Search
 
Meet up khabarovsk_ifind
Meet up khabarovsk_ifindMeet up khabarovsk_ifind
Meet up khabarovsk_ifind
 

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