Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
20 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
253.25 kB
Просмотров:
55
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Как, используя Lucene,](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img0.jpg)
Содержание слайда: Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных
№2 слайд![Одноклассники в цифрах Что у](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img1.jpg)
Содержание слайда: Одноклассники в цифрах
Что у нас есть:
100 млн пользователей;
3.3 млн групп;
.....
4.1 млн пользователей онлайн;
В секунду:
250. тыс. страниц, 50мс, 70Гбит/с;
6 тыс. сообщений и комментариев;
1.5 тыс. поисковых запросов.
№3 слайд![Зачем нам понадобились свои](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img2.jpg)
Содержание слайда: Зачем нам понадобились свои поисковые системы?
Пользователь не всегда знает, как именно регистрировался искомый друг
На сайте были огромные каталоги групп и сообществ
Планировались новые сервисы, которым понадобится поиск
Как правило, человек ищет то, что уже есть у кого-то из его друзей
№4 слайд![Почему Lucene? Поиск по MS](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img3.jpg)
Содержание слайда: Почему Lucene?
Поиск по MS SQL базе был крайне медленным
На Java написано 99% нашего кода, поэтому Sphinx даже не смотрели
Apachе Lucene/Solr поддерживаются большим сообществом и хорошо себя зарекомендовали
Уже был опыт использования Solr
Быстрый поиск других поисковых
Java-проектов результатов не дал
№5 слайд![Как устроен Lucene?](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img4.jpg)
Содержание слайда: Как устроен Lucene?
№6 слайд![Требования к системе индексов](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img5.jpg)
Содержание слайда: Требования к системе индексов
Отказоустойчивость и масштабируемость
Высокая производительность поисковых серверов
Гибкое индексирование
Возможность сбора дополнительной информации перед индексацией
Возможность анализа готового индекса
№7 слайд![Что нас не устроило в Solr](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img6.jpg)
Содержание слайда: Что нас не устроило в Solr
Solr:
сервер использует только один процессор
репликация индексов на bash-скриптах
http - это дорого и медленно
сложно модифицировать
Но Lucene нас устраивает, поэтому пишем свой сервер
№8 слайд![Архитектура](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img7.jpg)
Содержание слайда: Архитектура
№9 слайд![Требования к поисковой](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img8.jpg)
Содержание слайда: Требования к поисковой системе
Отказоустойчивость
Использование социального графа
Эффективность
Простое изменение и расширение функциональности
Сбор статистики по пользователям
Высокая пропускная способность
№10 слайд![Как работает поисковая система](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img9.jpg)
Содержание слайда: Как работает поисковая система
№11 слайд![Проблемы работа с индексом](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img10.jpg)
Содержание слайда: Проблемы: работа с индексом
Lucene активно читает файлы во время поиска
Пробовали:
Диск с FSDirectory и NIODirectory
RamDrive с FSDirectory и NIODirectory
Lucene RamDirectory
Собственный UnsafeDirectory
Победил:
HeapDirectоry файлы как byte[] в хипе
№12 слайд![Проблемы ThreadLocal кэши](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img11.jpg)
Содержание слайда: Проблемы: ThreadLocal кэши
Долгий GC из-за уймы мелких объектов в хипе
Причины:
Lucene использует ThreadLocal кэши для некоторых объектов
Jboss Remoting на каждое соединение содает поток, а их тысячи
Первое решение:
Пул для выполнения запросов
Второе решение:
Делая другую оптимизацию, убрали эти кэши
№13 слайд![Проблемы медленные хранимые](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img12.jpg)
Содержание слайда: Проблемы: медленные хранимые поля
Медленная работа с хранимыми полями
Причина:
При считывании хранимого поля создается много мусора и производятся ненужные операции
Решение:
Считывать значение в нужный тип сразу из byte[]
Результат:
На порядок быстрее стали операции с хранимыми полями
Время GC упало в 2 раза
№14 слайд![Распознавание полей Поиск](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img13.jpg)
Содержание слайда: Распознавание полей
Поиск пользователей идет по следующим полям:
имя и фамилия, город, страна, интервал возростов
Друга можно искать, вводя известные данные:
«илья широков 30»
«илья широков москва»
«илья широков 25-30 россия»
№15 слайд![Поиск по возрасту Стандартные](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img14.jpg)
Содержание слайда: Поиск по возрасту
Стандартные решения:
Добавление всех подходящих терминов
Префиксные термины для снижения количества терминов в запросе
Запрос к FieldCache
Фильтр результатов
Наше решение:
Возраст хранится ввиде даты: yyyymmdd
Запрос по текстовым полям оборачивается в фильтрующий запрос, который проверяет отбраные документы по хранимому полю
№16 слайд![Поиск музыки В базе есть](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img15.jpg)
Содержание слайда: Поиск музыки
В базе есть:
артисты; альбомы; композиции
не сортированые музыкальные композиции
Три точности совпадения:
точное; все слова из запроса; некоторые слова из запроса
Поиск всегда идет по всем видам документов
От точности совпадения зависит поведение UI
На место в выдаче влияет рейтинг документа
С индекса собираются всевозможные топы
№17 слайд![Индексация музыки Все храним](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img16.jpg)
Содержание слайда: Индексация музыки
Все храним в одном индексе
У каждого документа:
в id зашит его тип (артист; альбом; композиция; файл)
тип как отдельное поле
рейтинг как параметр индексации
рейтинг как хранимое поле
Текстовые поля:
по отдельности
необходимые комбинации
2 представления текста: оригинал + фонетика
№18 слайд![Поиск музыки Пробовали](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img17.jpg)
Содержание слайда: Поиск музыки
Пробовали:
Отдельный запросы для каждого типа
Повторные запросы с меньшей точностью
Настройка оценщика веса для результата
Решение:
Запрос состоит из комбинаций: точность + поле данных
Для каждой комбинации есть интервал значений весов
Вес из подзапроса нормализуется в интервал комбинации
Если документ отвечает запросу, сразу вычисляем его тип и добавляем в соответствующий коллектор
№19 слайд![Поисковые сервера](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img18.jpg)
Содержание слайда: Поисковые сервера
№20 слайд![](/documents/d867eb55b06ddaa4ebbd2d598220e0c4/img19.jpg)