Дмитрий Калугин-Балашов, mail.ru
DESCRIPTION
HighLoad++ 2013TRANSCRIPT
Полнотекстовый поиск в Почте Mail.Ru
Дмитрий Калугин-Балашов
Общая схема
Поисковый демон
Почтовый демон
Перлячка Браузер
Токенизация
Токенизация
Токенизация
Токенизация
Токенизация
Токенизация
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
Токенизация
/var/mail/vdomains/mail.ru/A12/test
Токенизация
/var/mail/vdomains/mail.ru/A12/test
Токенизация
/var/mail/vdomains/mail.ru/A12/test
Токенизация
/var/mail/vdomains/mail.ru/A12/test
Токенизация
/var/mail/vdomains/mail.ru/A12/test
Токенизация
http://something.org/aaa/bbb?ccc=ddd#eee
Обратный индекс
Word { DocID, DocID, DocID }
Snapshot
Словарь Word Offset
Word Offset
…
Word Offset
0 0
Count DocID DocID … DocID
Snapshot
Словарь
Word Offset
Word Offset
…
Word Offset
0 0
Snapshot
Словарь Word Offset
Word Offset
…
Word Offset
0 0
Мета-словарь
Count_0x00
Count_0x01
Count_0xFF
XLog
Transaction Transaction Transaction … Transaction
DocID Length CRC32 Cmd Cmd … Cmd
CMD_WORDS
XLog
DocID { Word, Word, Word }
Поиск
Snapshot XLog
Бинарный поиск Линейный поиск
U
Merge (>20M, >200ms)
NZData
DocID Offset
DocID Offset
… …
DocID Offset
0 0
Count NZ NZ … NZ
Числовые зоны
Filter Filter Filter Ranker Limit
10000 1000 250 100 100 25
Range(Date)
IsRead Flagged
QSort(Date)
NZData
DocID Offset
DocID Offset
… …
DocID Offset
0 0
Count NZ NZ … NZ Count TZ TZ …
TZData
TZData
C Z Length Text
CP1251/UTF8
GZip/NoGZip
Общая схема Query B-Search (Snapshot)
Search (XLog) U
Чтение числовых зон (почтовый демон) Чтение из NZData
Filter 1
Filter 2
Filter N Ranker Limit Чтение из TZData
«Подсветка» слов Формирование XML-ответа
Саджесты
Prefix Count Offset
Prefix Count NULL
Prefix Count Offset
…
0 0 0
N Length Postfix Count … Length Postfix Count
Метрики качества
• Среднее время исполнения поискового запроса
• Количество поисковых запросов
• Количество пустых ответов
• Количество переходов в письмо из результатов поиска
• Количество повторных запросов
• Количество перелистываний результатов
• Среднее время перехода в письмо
Вопросы?
Дмитрий Калугин-Балашов программист, Почта Mail.Ru