Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Полнотекстовый поиск в Почте
Mail.Ru
Дмитрий Калугин-Балашов
Общая схема
Поисковый
демон
Перлячка

Почтовый
демон

Браузер
Токенизация

d.kalugin-balashov@corp.mail.ru
Токенизация

d.kalugin-balashov@corp.mail.ru
Токенизация

d.kalugin-balashov@corp.mail.ru
Токенизация

d.kalugin-balashov@corp.mail.ru
Токенизация

d.kalugin-balashov@corp.mail.ru
Токенизация
d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru
d.kalugin-balashov@corp.mail.ru d.kalugin-bala...
Токенизация

/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
Word
…
Word
0

Словарь

Count

DocID

DocID

…

DocID

Offset
Offset
Offset
0
Snapshot

Словарь

Word
Word
…
Word
0

Offset
Offset
Offset
0
Count_0x00
Count_0x01

Snapshot
Мета-словарь

Count_0xFF
Словарь

Word
Word
…
Word
0

Offset
Offset
Offset
0
XLog
Transaction

DocID

Transaction

Length

CRC32

Transaction

Cmd

CMD_WORDS

…

Cmd

Transaction

…

Cmd
XLog

DocID

{ Word, Word, Word }
Поиск
Бинарный поиск
Snapshot

Линейный поиск
Merge (>20M, >200ms)

U

XLog
NZData
DocID
DocID
…
DocID
0

Offset
Offset
…
Offset
0

Count NZ

NZ

…

NZ
Числовые зоны
10000

1000
Filter

Range(Date)
IsRead
Flagged

250
Filter

Filter

25

100

100
Ranker

QSort(Date)

Limit
NZData
DocID
DocID
…
DocID
0

Offset
Offset
…
Offset
0

Count NZ

TZData

NZ

…

NZ

Count TZ

TZ

…
TZData
C Z Length Text

GZip/NoGZip
CP1251/UTF8
Общая схема
Query

B-Search (Snapshot)
Search (XLog)

Чтение из NZData

U

Чтение числовых зон (почтовый демон)
Filter 1
F...
Саджесты
Prefix
Prefix
Prefix
…
0

N

Count
Count
Count

Offset
NULL
Offset

0

0

Length Postfix

Count

…

Length Postfi...
Метрики качества
• Среднее время исполнения поискового запроса
• Количество поисковых запросов
• Количество пустых ответов...
Вопросы?
Дмитрий Калугин-Балашов
программист, Почта Mail.Ru
d.kalugin-balashov@corp.mail.ru
rvncerr@rvncerr.org
Upcoming SlideShare
Loading in …5
×

Дмитрий Калугин-Балашов, Mail.Ru

1,115 views

Published on

HighLoad++ 2013

  • Be the first to comment

  • Be the first to like this

Дмитрий Калугин-Балашов, Mail.Ru

  1. 1. Полнотекстовый поиск в Почте Mail.Ru Дмитрий Калугин-Балашов
  2. 2. Общая схема Поисковый демон Перлячка Почтовый демон Браузер
  3. 3. Токенизация d.kalugin-balashov@corp.mail.ru
  4. 4. Токенизация d.kalugin-balashov@corp.mail.ru
  5. 5. Токенизация d.kalugin-balashov@corp.mail.ru
  6. 6. Токенизация d.kalugin-balashov@corp.mail.ru
  7. 7. Токенизация d.kalugin-balashov@corp.mail.ru
  8. 8. Токенизация d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru d.kalugin-balashov@corp.mail.ru
  9. 9. Токенизация /var/mail/vdomains/mail.ru/A12/test
  10. 10. Токенизация /var/mail/vdomains/mail.ru/A12/test
  11. 11. Токенизация /var/mail/vdomains/mail.ru/A12/test
  12. 12. Токенизация /var/mail/vdomains/mail.ru/A12/test
  13. 13. Токенизация /var/mail/vdomains/mail.ru/A12/test
  14. 14. Токенизация http://something.org/aaa/bbb?ccc=ddd#eee
  15. 15. Обратный индекс Word { DocID, DocID, DocID }
  16. 16. Snapshot Word Word … Word 0 Словарь Count DocID DocID … DocID Offset Offset Offset 0
  17. 17. Snapshot Словарь Word Word … Word 0 Offset Offset Offset 0
  18. 18. Count_0x00 Count_0x01 Snapshot Мета-словарь Count_0xFF Словарь Word Word … Word 0 Offset Offset Offset 0
  19. 19. XLog Transaction DocID Transaction Length CRC32 Transaction Cmd CMD_WORDS … Cmd Transaction … Cmd
  20. 20. XLog DocID { Word, Word, Word }
  21. 21. Поиск Бинарный поиск Snapshot Линейный поиск Merge (>20M, >200ms) U XLog
  22. 22. NZData DocID DocID … DocID 0 Offset Offset … Offset 0 Count NZ NZ … NZ
  23. 23. Числовые зоны 10000 1000 Filter Range(Date) IsRead Flagged 250 Filter Filter 25 100 100 Ranker QSort(Date) Limit
  24. 24. NZData DocID DocID … DocID 0 Offset Offset … Offset 0 Count NZ TZData NZ … NZ Count TZ TZ …
  25. 25. TZData C Z Length Text GZip/NoGZip CP1251/UTF8
  26. 26. Общая схема Query B-Search (Snapshot) Search (XLog) Чтение из NZData U Чтение числовых зон (почтовый демон) Filter 1 Filter 2 Чтение из TZData Limit Ranker Filter N «Подсветка» слов Формирование XML-ответа
  27. 27. Саджесты Prefix Prefix Prefix … 0 N Count Count Count Offset NULL Offset 0 0 Length Postfix Count … Length Postfix Count
  28. 28. Метрики качества • Среднее время исполнения поискового запроса • Количество поисковых запросов • Количество пустых ответов • Количество переходов в письмо из результатов поиска • Количество повторных запросов • Количество перелистываний результатов • Среднее время перехода в письмо
  29. 29. Вопросы? Дмитрий Калугин-Балашов программист, Почта Mail.Ru d.kalugin-balashov@corp.mail.ru rvncerr@rvncerr.org

×