dump-2015: «Полнотекстовый поиск по почте mail.ru» Дмитрий...
TRANSCRIPT
Полнотекстовый поиск по почте Mail.Ru
Дмитрий Калугин-‐Балашов
Браузер
Перлячка Браузер
Перлячка Браузер
Поисковый демон Перлячка Браузер
Поисковый демон Перлячка Браузер
Почтовый демон
Поисковый демон Перлячка Браузер
Почтовый демон
Поисковый демон Перлячка Браузер
Почтовый демон
Поисковый демон Перлячка Браузер
Обратный индекс
Обратный индекс Word
Word
…
Word
Обратный индекс Word
Word
…
Word
Обратный индекс Word
Word
…
Word
Word
Обратный индекс Word
Word
…
Word
Word FirstForms
Обратный индекс Word
Word
…
Word
Word FirstForms ToUpper
Обратный индекс Word
Word
…
Word
Word FirstForms ToUpper CRC32
Обратный индекс Word
Word
…
Word
Word FirstForms ToUpper CRC32
Токенизация
Токенизация
d.kalugin-‐[email protected]
Токенизация
d.kalugin-‐[email protected]
Токенизация
d.kalugin-‐[email protected]
Токенизация
d.kalugin-‐[email protected]
Токенизация
d.kalugin-‐[email protected]
Токенизация d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected]
d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected]
Токенизация d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected]
d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected] d.kalugin-‐[email protected]
Токенизация
/var/mail/vdomains/mail.ru/…
Токенизация
/var/mail/vdomains/mail.ru/…
Токенизация
/var/mail/vdomains/mail.ru/…
Токенизация
hap://aaa.bbb/ccc?ddd=eee#fff
Токенизация
hap://aaa.bbb/ccc?ddd=eee#fff
Обратный индекс Word
Word
…
Word
Обратный индекс Word Offset
Word Offset
… …
Word Offset
Обратный индекс Word Offset
Word Offset
… …
Word Offset
NULL NULL
Обратный индекс Word Offset
Word Offset
… …
Word Offset
NULL NULL
Обратный индекс Word Offset
Word Offset
… …
Word Offset
NULL NULL
N
Обратный индекс Word Offset
Word Offset
… …
Word Offset
NULL NULL
N DocID DocID … DocID
Обратный индекс Word Offset
Word Offset
… …
Word Offset
NULL NULL
N DocID Zone DocID Zone … DocID Zone
Обратный индекс
Word Offset
Word Offset
… …
Word Offset
N DocID Zone DocID Zone … DocID Zone
Meta[0] Meta[1] … Meta[255]
Бинарный лог
Бинарный лог Transacson Transacson Transacson … Transacson
Бинарный лог Transacson Transacson Transacson … Transacson
Header Body
Бинарный лог Transacson Transacson Transacson … Transacson
Header Body
DocID
Length
CRC32
Бинарный лог Transacson Transacson Transacson … Transacson
Header Body
DocID
Length
CRC32
Command Command Command … Command
Бинарный лог Transacson Transacson Transacson … Transacson
Header Body
DocID
Length
CRC32
Command Command Command … Command
CMD_WORDS CMD_WORDS2
Поиск
Поиск
Двоичный поиск по обратному индексу
Поиск
Двоичный поиск по обратному индексу Линейный поиск по бинарному логу
Поиск
Двоичный поиск по обратному индексу Линейный поиск по бинарному логу
U
Поиск
Двоичный поиск по обратному индексу Линейный поиск по бинарному логу
U
Поиск
Двоичный поиск по обратному индексу Линейный поиск по бинарному логу
U
20 Mb, 400 ms
Компактификация
Компактификация
Компактификация
Компактификация qsort() qsort() qsort() qsort() qsort()
Компактификация qsort() qsort() qsort() qsort() qsort()
Компактификация qsort() qsort() qsort() qsort() qsort()
merge
Числовые зоны
Числовые зоны DocID Offset
DocID Offset
… …
DocID Offset
NULL NULL
Числовые зоны DocID Offset
DocID Offset
… …
DocID Offset
NULL NULL
N NZ NZ … NZ
Числовые зоны
10000
Числовые зоны
Filter Filter Filter 10000
Числовые зоны
Filter Filter Filter 10000 2000
Числовые зоны
Filter Filter Filter 10000 2000 500
Числовые зоны
Filter Filter Filter 10000 2000 500 150
Числовые зоны
Filter Filter Filter Ranker 10000 2000 500 150
Числовые зоны
Filter Filter Filter Ranker 10000 2000 500 150 150
Числовые зоны
Filter Filter Filter Ranker Limiter 10000 2000 500 150 150
Числовые зоны
Filter Filter Filter Ranker Limiter 10000 2000 500 150 150 25
Текстовые зоны
Текстовые зоны
Length Text
Текстовые зоны
I G Length Text
Текстовые зоны
I G Length Text
iconv: cp1251/u�8
Текстовые зоны
I G Length Text
iconv: cp1251/u�8
gzip: yes/no
Текстовые зоны DocID Offset
DocID Offset
… …
DocID Offset
NULL NULL
N NZ NZ … NZ
Текстовые зоны DocID Offset
DocID Offset
… …
DocID Offset
NULL NULL
N NZ NZ … NZ N TZ TZ
Индекс саджестов
Индекс саджестов Prefix
Prefix
…
Prefix
NULL
Индекс саджестов Prefix Count
Prefix Count
… …
Prefix Count
NULL NULL
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
N
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
N Pos�ix … Pos�ix
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
N Length Pos�ix … Length Pos�ix
Индекс саджестов Prefix Count Offset
Prefix Count Offset = NULL
… … …
Prefix Count Offset
NULL NULL NULL
N Length Pos�ix Count … Length Pos�ix Count
Что дальше?
Поиск в облаке • set(key, value); • get(key1, key2); • del(key1, key2);
Поиск в облаке • email|w[WORD][DOCID] : z1,z2,z3 • email|t[TZ] : text • email|d : docid,docid,…