41
Полнотекстовый поиск в Почте

Kalugin balashov

Embed Size (px)

Citation preview

Page 1: Kalugin balashov

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

Page 2: Kalugin balashov

3

Page 3: Kalugin balashov

`

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

(хранилище)

Поисковый демон

Front-end (Web-сервер)

Data

Query/Answer

Page 4: Kalugin balashov
Page 11: Kalugin balashov

Аномалия №1

/var/mail/folder1/folder2/folder3/folder4/folder5/mail.ru/username

https://e.mail.ru/cgi-bin/msglist#gosearch?q_read=2&q_folder=all

Page 12: Kalugin balashov

Аномалия №1

Page 13: Kalugin balashov

Аномалия №1

/var/mail/folder1/folder2/folder3/folder4/folder5/mail.ru/username

https://e.mail.ru/cgi-bin/msglist#gosearch?q_read=2&q_folder=all

Page 14: Kalugin balashov

Аномалия №1

/var/mail/folder1/folder2/folder3/folder4/folder5/mail.ru/username

https://e.mail.ru/cgi-bin/msglist#gosearch?q_read=2&q_folder=all

Page 15: Kalugin balashov

Аномалия №1

/var/mail/folder1/folder2/folder3/folder4/folder5/mail.ru/username

https://e.mail.ru/cgi-bin/msglist#gosearch?q_read=2&q_folder=all

Page 16: Kalugin balashov

Аномалия №1

/var/mail/folder1/folder2/folder3/folder4/folder5/mail.ru/username

https://e.mail.ru/cgi-bin/msglist#gosearch?q_read=2&q_folder=all

Page 17: Kalugin balashov

Обратный индекс

Page 18: Kalugin balashov

Обратный индекс

Word {DocID, DocID, DocID}

Page 19: Kalugin balashov

Snapshot

Словарь

Page 20: Kalugin balashov

Word Offset

Word Offset

Word Offset

0 0 Признак конца словаря

Snapshot

Page 21: Kalugin balashov

Словарь

Snapshot

Page 22: Kalugin balashov

Word Offset

Word Offset

Word Offset

0 0

Признак конца словаря

Count DocID DocID … DocID

Snapshot

Page 23: Kalugin balashov

Аномалия №2

Словарь (1M)

Page 24: Kalugin balashov

Аномалия №2

Словарь (100M)

Page 25: Kalugin balashov

Аномалия №2

Page 26: Kalugin balashov

Аномалия №2

Словарь (100M)

Мета-словарь (256*4)

Page 27: Kalugin balashov

Word Offset

Word Offset

Word Offset

0 0

Count DocID DocID … DocID

N0

N1

N255

Аномалия №2

Page 28: Kalugin balashov

Transaction Transaction Transaction … Transaction

DocID Length CRC32 Command Command … Command

XLog

Page 29: Kalugin balashov

XLog

DocID {Word, Word, Word}

Page 30: Kalugin balashov

` Snapshot XLog

Бинарный поиск Линейный поиск

“U”

>20M, Merge

Page 31: Kalugin balashov

DocID Offset

DocID Offset

DocID Offset

0 0

Признак конца словаря

Count NZ NZ … NZ

NZData

Page 32: Kalugin balashov

Чтение из почтового демона

Чтение из NZData

Не удалось

Page 33: Kalugin balashov

Filter Filter Filter Ranker Limit

10000 1000 250 100 100 25

IsRead

Flagged

Date (Range) QSort (Date) SQL LIMIT

Page 34: Kalugin balashov

` DocID Offset

DocID Offset

DocID Offset

0 0

Признак конца словаря

Count NZ NZ … NZ Count TZ …

NZData

TZData

Page 35: Kalugin balashov

` TZData

Length Text

Length Text

Length Text

GZip gzseek

GZip lseek

Page 36: Kalugin balashov

Query

B-Search

(Snapshot) Search (XLog)

U

Чтение

числовых зон

(почтовый

демон) Чтение из NZData

Filter 1

Filter 2

Filter N

Ranker

Limit

Чтение из TZData

«Подсветка» слов

XML-Ответ

Page 37: Kalugin balashov
Page 38: Kalugin balashov

Prefix Count Offset

Prefix Count NULL

Prefix Count Offset

0 0 0

N Length Postfix Count … Length Postfix Count

M = 6 M = 6 M = 2

Page 39: Kalugin balashov
Page 40: Kalugin balashov

Вопросы?

Page 41: Kalugin balashov

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

п р о г р а м м и с т , П о ч т а M a i l . R u

d . k a l u g i n - b a l a s h o v @ c o r p . m a i l . r u

r v n c e r r @ r v n c e r r . o r g