🗊Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных

Категория: Технологии
Нажмите для полного просмотра!
Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №1Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №2Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №3Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №4Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №5Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №6Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №7Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №8Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №9Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №10Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №11Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №12Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №13Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №14Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №15Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №16Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №17Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №18Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №19Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №20

Вы можете ознакомиться и скачать Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных. Презентация содержит 20 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных
Описание слайда:
Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных

Слайд 2





Одноклассники в цифрах
Что у нас есть:
100 млн пользователей;
3.3 млн групп;
.....
4.1 млн пользователей онлайн;
В секунду:
250. тыс. страниц, 50мс, 70Гбит/с;
6 тыс. сообщений и комментариев;
1.5 тыс. поисковых запросов.
Описание слайда:
Одноклассники в цифрах Что у нас есть: 100 млн пользователей; 3.3 млн групп; ..... 4.1 млн пользователей онлайн; В секунду: 250. тыс. страниц, 50мс, 70Гбит/с; 6 тыс. сообщений и комментариев; 1.5 тыс. поисковых запросов.

Слайд 3





Зачем нам понадобились свои поисковые системы?
Пользователь не всегда знает, как именно регистрировался искомый друг
На сайте были огромные каталоги групп и сообществ
Планировались новые сервисы, которым понадобится поиск
Как правило, человек ищет то, что уже есть у кого-то из его друзей
Описание слайда:
Зачем нам понадобились свои поисковые системы? Пользователь не всегда знает, как именно регистрировался искомый друг На сайте были огромные каталоги групп и сообществ Планировались новые сервисы, которым понадобится поиск Как правило, человек ищет то, что уже есть у кого-то из его друзей

Слайд 4





Почему Lucene?
Поиск по MS SQL базе был крайне медленным
На Java написано 99% нашего кода, поэтому Sphinx даже не смотрели
Apachе Lucene/Solr поддерживаются большим сообществом и хорошо себя зарекомендовали
Уже был опыт использования Solr
Быстрый поиск других поисковых 
Java-проектов результатов не дал
Описание слайда:
Почему Lucene? Поиск по MS SQL базе был крайне медленным На Java написано 99% нашего кода, поэтому Sphinx даже не смотрели Apachе Lucene/Solr поддерживаются большим сообществом и хорошо себя зарекомендовали Уже был опыт использования Solr Быстрый поиск других поисковых Java-проектов результатов не дал

Слайд 5





Как устроен Lucene?
Описание слайда:
Как устроен Lucene?

Слайд 6





Требования к системе индексов
Отказоустойчивость и масштабируемость
Высокая производительность поисковых серверов
Гибкое индексирование
Возможность сбора дополнительной информации перед индексацией
Возможность анализа готового индекса
Описание слайда:
Требования к системе индексов Отказоустойчивость и масштабируемость Высокая производительность поисковых серверов Гибкое индексирование Возможность сбора дополнительной информации перед индексацией Возможность анализа готового индекса

Слайд 7





Что нас не устроило в Solr
Solr:
сервер использует только один процессор
репликация индексов на bash-скриптах
http - это дорого и медленно
сложно модифицировать
Но Lucene нас устраивает, поэтому пишем свой сервер
Описание слайда:
Что нас не устроило в Solr Solr: сервер использует только один процессор репликация индексов на bash-скриптах http - это дорого и медленно сложно модифицировать Но Lucene нас устраивает, поэтому пишем свой сервер

Слайд 8





Архитектура
Описание слайда:
Архитектура

Слайд 9





Требования к поисковой системе
Отказоустойчивость
Использование социального графа
Эффективность
Простое изменение и расширение функциональности
Сбор статистики по пользователям
Высокая пропускная способность
Описание слайда:
Требования к поисковой системе Отказоустойчивость Использование социального графа Эффективность Простое изменение и расширение функциональности Сбор статистики по пользователям Высокая пропускная способность

Слайд 10





Как работает поисковая система
Описание слайда:
Как работает поисковая система

Слайд 11





Проблемы: работа с индексом
Lucene активно читает файлы во время поиска
Пробовали:
Диск с FSDirectory и NIODirectory
RamDrive с FSDirectory и NIODirectory
Lucene RamDirectory 
Собственный UnsafeDirectory
Победил:
HeapDirectоry файлы как byte[] в хипе
Описание слайда:
Проблемы: работа с индексом Lucene активно читает файлы во время поиска Пробовали: Диск с FSDirectory и NIODirectory RamDrive с FSDirectory и NIODirectory Lucene RamDirectory Собственный UnsafeDirectory Победил: HeapDirectоry файлы как byte[] в хипе

Слайд 12





Проблемы: ThreadLocal кэши
Долгий GC из-за уймы мелких объектов в хипе
Причины:
Lucene использует ThreadLocal кэши для некоторых объектов
Jboss Remoting на каждое соединение содает поток, а их тысячи
Первое решение:
Пул для выполнения запросов
Второе решение:
Делая другую оптимизацию, убрали эти кэши
Описание слайда:
Проблемы: ThreadLocal кэши Долгий GC из-за уймы мелких объектов в хипе Причины: Lucene использует ThreadLocal кэши для некоторых объектов Jboss Remoting на каждое соединение содает поток, а их тысячи Первое решение: Пул для выполнения запросов Второе решение: Делая другую оптимизацию, убрали эти кэши

Слайд 13





Проблемы: медленные хранимые поля
Медленная работа с хранимыми полями
Причина:
При считывании хранимого поля создается много мусора и производятся ненужные операции
Решение:
Считывать значение в нужный тип сразу из byte[]
Результат:
На порядок быстрее стали операции с хранимыми полями
Время GC упало в 2 раза
Описание слайда:
Проблемы: медленные хранимые поля Медленная работа с хранимыми полями Причина: При считывании хранимого поля создается много мусора и производятся ненужные операции Решение: Считывать значение в нужный тип сразу из byte[] Результат: На порядок быстрее стали операции с хранимыми полями Время GC упало в 2 раза

Слайд 14





Распознавание полей
Поиск пользователей идет по следующим полям:
	имя и фамилия, город, страна, интервал возростов 
Друга можно искать, вводя известные данные:
«илья широков 30»
«илья широков москва»
«илья широков 25-30 россия»
Описание слайда:
Распознавание полей Поиск пользователей идет по следующим полям: имя и фамилия, город, страна, интервал возростов Друга можно искать, вводя известные данные: «илья широков 30» «илья широков москва» «илья широков 25-30 россия»

Слайд 15





Поиск по возрасту
Стандартные решения:
Добавление всех подходящих терминов
Префиксные термины для снижения количества терминов в запросе
Запрос к FieldCache
Фильтр результатов
Наше решение:
Возраст хранится ввиде даты: yyyymmdd
Запрос по текстовым полям оборачивается в фильтрующий запрос, который проверяет отбраные документы по хранимому полю
Описание слайда:
Поиск по возрасту Стандартные решения: Добавление всех подходящих терминов Префиксные термины для снижения количества терминов в запросе Запрос к FieldCache Фильтр результатов Наше решение: Возраст хранится ввиде даты: yyyymmdd Запрос по текстовым полям оборачивается в фильтрующий запрос, который проверяет отбраные документы по хранимому полю

Слайд 16





Поиск музыки
В базе есть:
артисты; альбомы; композиции
не сортированые музыкальные композиции
Три точности совпадения:
точное; все слова из запроса; некоторые слова из запроса
Поиск всегда идет по всем видам документов
От точности совпадения зависит поведение UI
На место в выдаче влияет рейтинг документа
С индекса собираются всевозможные топы
Описание слайда:
Поиск музыки В базе есть: артисты; альбомы; композиции не сортированые музыкальные композиции Три точности совпадения: точное; все слова из запроса; некоторые слова из запроса Поиск всегда идет по всем видам документов От точности совпадения зависит поведение UI На место в выдаче влияет рейтинг документа С индекса собираются всевозможные топы

Слайд 17





Индексация музыки
Все храним в одном индексе
У каждого документа:
в id зашит его тип (артист; альбом; композиция; файл)
тип как отдельное поле
рейтинг как параметр индексации
рейтинг как хранимое поле
Текстовые поля:
по отдельности
необходимые комбинации
2 представления текста: оригинал + фонетика
Описание слайда:
Индексация музыки Все храним в одном индексе У каждого документа: в id зашит его тип (артист; альбом; композиция; файл) тип как отдельное поле рейтинг как параметр индексации рейтинг как хранимое поле Текстовые поля: по отдельности необходимые комбинации 2 представления текста: оригинал + фонетика

Слайд 18





Поиск музыки
Пробовали:
Отдельный запросы для каждого типа
Повторные запросы с меньшей точностью
Настройка оценщика веса для результата
Решение:
Запрос состоит из комбинаций: точность + поле данных
Для каждой комбинации есть интервал значений весов
Вес из подзапроса нормализуется в интервал комбинации
Если документ отвечает запросу, сразу вычисляем его тип и добавляем в соответствующий коллектор
Описание слайда:
Поиск музыки Пробовали: Отдельный запросы для каждого типа Повторные запросы с меньшей точностью Настройка оценщика веса для результата Решение: Запрос состоит из комбинаций: точность + поле данных Для каждой комбинации есть интервал значений весов Вес из подзапроса нормализуется в интервал комбинации Если документ отвечает запросу, сразу вычисляем его тип и добавляем в соответствующий коллектор

Слайд 19





Поисковые сервера
Описание слайда:
Поисковые сервера

Слайд 20


Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных, слайд №20
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию