HighLoad++

Конференция разработчиков
высоконагруженных систем

Полнотекстовый поиск в Почте Mail.Ru

Доклад принят в Программу конференции

Требования, предъявляемые к поиску по почте, отличаются от тех, которые обычно предъявляют к "большим" поисковым системам. Это становится причиной применения совершенно других, нестандартных технологических решений. В докладе я расскажу про устройство полнотекстового поиска в Почте Mail.Ru.

Основные темы, которых мы коснемся:
– Чем поиск по почте отличается от «большого» веб-поиска? Данные не хранятся в одном большом индексе, для каждого почтового ящика индекс свой: пополнять «большой» индекс – это фактически постоянно держать его в памяти, а это – дорого. Также стоит отметить, что почта – вещь интимная, и допустить «смешивание» данных (например, из-за ошибки разработчика) нельзя. Кроме того, для поиска по почте характерны более серьезные требования к полноте поисковой выдачи. Недопустимо, чтобы пропало даже одно письмо (баг с потерей письма всегда ставится в блокирующем приоритете).
– Нерентабельность кеширования индексов. Обычно по почте пользователи ищут не более, чем по 2 запроса подряд. Держать их индекс в памяти долгое время – дорого. Поэтому индекс устроен таким образом, что необходимую информацию из него можно прочитать с диска в минимальное время (2-3 обращения к диску, целиком индекс никогда не читается, лишь его малая часть).
– Токенизация – разбиение текстов на отдельные слова. Рассмотрим алгоритм и причины его выбора.
– Процесс пополнения индекса с минимальными затратами и основания для перестройки индексов. Индекс должен обновляться сразу, как только произошли изменения. Столь частые изменения индекса вызывают повышенную нагрузку на диск (приходится переписывать файл с индексом целиком, т.к. данные в нем – сортированные). Чтобы этого избежать, свежие данные храним в несортированном виде (в виде лога транзакций), по которому осуществляем последовательный поиск. Добавление информации в этот лог – одна операция записи в конец файла. Перестраивается индекс тогда, когда скорость поиска становится ниже заданного порога.
– Рассмотрим сам процесс поиска по индексу и последующие операции над полученной выборкой: применение фильтров, ранжирование (в отличие от «большого» web-поиска, в поиске по почте ранжирование тривиально – это всего лишь сортировка по дате), «подсветка» найденных слов в результате.
– Строение индекса саджестов (поисковых подсказок), обоснование его оптимальности (максимальная скорость получения результата при разумном размере индекса), а также сам алгоритм получения выборки саджестов.
– Поговорим об отказоустойчивости и об измерении качества поиска.

Золотой спонсор

  • Вadoo

Золотой спонсор

  • Percona

Игровой партнёр

  • WarGaming

Генеральный интернет-партнёр

  • Mail.Ru Group

Бронзовые спонсоры

  • Microsoft

Бронзовые спонсоры

  • Nutanix

Серебряный спонсор

  • http://www.google.com/

Серебряный спонсор

  • Webzilla

Travel-спонсор

  • Интернет Хостинг Центр

Технический партнёр

  • Филанко

HR-партнёр

  • SuperJob

HeadHunter-партнёр

  • HeadHunter

Партнёр по персоналу

  • http://www.rabota.ru/

Фри-ланс партнёр

  • http://www.free-lance.ru/

Информационная поддержка

  • Макхост
  • TRINET
  • Интуит
  • Нетология
  • Elama
  • Rusonyx
  • SpaceWeb
  • PС Мagazine
  • http://www.hse.ru/
  • ServerNews
  • Бизнес-школа RMA
  • http://e-personal.ru/
  • Учебный центр Luxoft Training
  • Webnames.ru
  • ExpoMap.ru
  • Русская школа управления
  • Internest
  • ООО «Юмисофт»
  • Финам
  • HackDay
  • SoftKey
  • GISMETEO / ГИСМЕТЕО
  • Agilecamp
  • ESET CLUB
  • Агава
  • Digitale
  • Блогун
  • CMS Magazine
  • Bugtraq.ru
  • Xakep.ru
  • http://www.samag.ru/
  • SQLInfo.ru
  • http://webew.ru/
  • HSE INC
  • timeofnewz
  • Moscow Business School
  • REG.RU
  • PeterHost
  • RUcenter
  • Хостинг-Центр
По любым вопросам обращайтесь:
Программный комитет :
Олег Бунин , +7 (916) 635-95-84
Бухгалтерия и вопросы оплаты :
, +7(495) 646-07-68
Организационный комитет :
Олег Бунин , +7 (916) 635-95-84

Почтовый адрес:
119180, Москва, Бродников пер., д. 7 стр. 1, +7(495) 646-07-68, ООО «Онтико»

Rambler's Top100
Рейтинг@Mail.ru