SlideShare a Scribd company logo
Найти иг[ло]ку в
стоге сена
Information retrieval
●
○
●
○
●
○
Computer vision
Parametric search
http://market.yandex.ua
Text search
Basic
data structures
Simple matching
String needle = getUserInput();
for ( String title : dictionary ) {
if ( title.equals( needle ) ) {
System.out.println( “Gotcha!” );
}
}
Simple matching: better
String needle = getUserInput().toLowerCase();
for ( String title : dictionary ) {
if ( title.startsWith( needle ) ) {
System.out.println( “Gotcha!” );
}
}
Simple matching: awesomest !
String needle = “транс”;
начало сравнений
...
терминатор
транзит
трансамерика
трансильвания
трансформеры
...
Simple matching. Results.
Hash-based search
.hashCode() % buckets.length buckets
Терминатор 1207003689 00
Альф 32058595 01
Поймай меня если сможешь 824411401 02
Умри, но не сейчас 1792373633 03
Зловещие мертвецы 1534549542 04
Терминал 1534215135 05
09
...
Hash-based search
05
ТерминалАльф ...
Hash-based search
Radix trie
ме
с довый месяц
т яц в деревне
о ь в
сына встречи уду ампира илли
...
Медовый месяц
Месяц в деревне
Месть вампира
Месть вуду
Месть вилли
Место сына
Место встречи
...
Radix trie
Advanced
approaches
Fuzzy search factors
Трансформеры
перестановка трансфромеры
вставка транссформеры
удаление тр_нсформеры
замена трансформиры
Levenshtein distance
Ученый-математик, доктор
физико-математических
наук.
Функцию его имени можно
найти в любом языке
программирования.
http://ethw.org/images/8/83/Levenshtein.jpg
Jaro-Winkler distance
s - длина слова
m - кол-во совпавших сомволов
t - половина транспозиций
l - длина общего префикса
p - коэф.сглаживания (~0.1)
Jaro-Winkler distance
m = 5
W1
W2
d
хорошо
шорох
0.7
пробка
коробка
0.78
звезда
звездный
0.89
Jaro-Winkler distance
Depth-first search (DFS)
A
B C
DC A C
DB D E F
Needle = ABCD
ABCD
ABC(B→D)
AB(+C)D
A(C→B)CD
A(C→B)C(E→D)
A(C→B)C(F→D)
A(+B)C(A→D)
Depth-first search (DFS)
N-gram
АЛО начАЛО, русАЛОчка,
волшебное
зеркАЛО ...
АЧА нАЧАло, удАЧА, нАЧАльники ...
НАЧ НАЧало, НАЧальники,
геркулес
НАЧало ...
ЧАЛ наЧАЛо,
мгновения
пеЧАЛи,
наЧАЛьники ...
Начало (Inception), 2010 год
N-gram
N-gram
●
○
○
●
○
○
●
○
*по моему субъективному опыту
N-gram
Lookup
improvements
Template hashing
T R A N S F O R M E R S
1 0 1 0 0 0 1 1 1 1 0 0 0
A C E G I K M O Q S U W Y
B D F H J L N P R T V X Z
Template hashing
Bloom filter
0 1 0 0 0 0 1 1 0 0
Needle
Bloom filter
Thank you!
Questions? :)

More Related Content

More from Аліна Шепшелей

Valerii Iakovenko Drones as the part of the present
Valerii Iakovenko	Drones as the part of the presentValerii Iakovenko	Drones as the part of the present
Valerii Iakovenko Drones as the part of the present
Аліна Шепшелей
 
Valerii Moisieienko Apache hbase workshop
Valerii Moisieienko	Apache hbase workshopValerii Moisieienko	Apache hbase workshop
Valerii Moisieienko Apache hbase workshop
Аліна Шепшелей
 
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Аліна Шепшелей
 
Anton Ivinskyi Application level metrics and performance tests
Anton Ivinskyi	Application level metrics and performance testsAnton Ivinskyi	Application level metrics and performance tests
Anton Ivinskyi Application level metrics and performance tests
Аліна Шепшелей
 
Миша Рыбачук Что такое дизайн?
Миша Рыбачук Что такое дизайн?Миша Рыбачук Что такое дизайн?
Миша Рыбачук Что такое дизайн?
Аліна Шепшелей
 
Макс Семенчук Дизайнер, которому доверяют
 Макс Семенчук Дизайнер, которому доверяют Макс Семенчук Дизайнер, которому доверяют
Макс Семенчук Дизайнер, которому доверяют
Аліна Шепшелей
 
Anton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designersAnton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designers
Аліна Шепшелей
 
Andrew Veles Product design is about the process
Andrew Veles Product design is about the processAndrew Veles Product design is about the process
Andrew Veles Product design is about the process
Аліна Шепшелей
 
Kononenko Alina Designing for Apple Watch and Apple TV
Kononenko Alina Designing for Apple Watch and Apple TVKononenko Alina Designing for Apple Watch and Apple TV
Kononenko Alina Designing for Apple Watch and Apple TV
Аліна Шепшелей
 
Mihail Patalaha Aso: how to start and how to finish?
Mihail Patalaha Aso: how to start and how to finish?Mihail Patalaha Aso: how to start and how to finish?
Mihail Patalaha Aso: how to start and how to finish?
Аліна Шепшелей
 
Gregory Shehet Undefined' on prod, or how to test a react app
Gregory Shehet Undefined' on  prod, or how to test a react appGregory Shehet Undefined' on  prod, or how to test a react app
Gregory Shehet Undefined' on prod, or how to test a react app
Аліна Шепшелей
 
Alexey Osipenko Basics of functional reactive programming
Alexey Osipenko Basics of functional reactive programmingAlexey Osipenko Basics of functional reactive programming
Alexey Osipenko Basics of functional reactive programming
Аліна Шепшелей
 
Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web
Аліна Шепшелей
 
Roman Ugolnikov Migrationа and sourcecontrol for your db
Roman Ugolnikov Migrationа and sourcecontrol for your dbRoman Ugolnikov Migrationа and sourcecontrol for your db
Roman Ugolnikov Migrationа and sourcecontrol for your db
Аліна Шепшелей
 
Dmutro Panin JHipster
Dmutro Panin JHipster Dmutro Panin JHipster
Dmutro Panin JHipster
Аліна Шепшелей
 
Alex Theedom Java ee revisits design patterns
Alex Theedom	Java ee revisits design patternsAlex Theedom	Java ee revisits design patterns
Alex Theedom Java ee revisits design patterns
Аліна Шепшелей
 
Volodymyr Getmanskyi How to build a dynamic pricing model using big data
Volodymyr Getmanskyi How to build a dynamic pricing model using big dataVolodymyr Getmanskyi How to build a dynamic pricing model using big data
Volodymyr Getmanskyi How to build a dynamic pricing model using big data
Аліна Шепшелей
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
Аліна Шепшелей
 
Ievgen Vladimirov Only cloud
Ievgen Vladimirov Only cloudIevgen Vladimirov Only cloud
Ievgen Vladimirov Only cloud
Аліна Шепшелей
 
Denis Reznik Data driven future
Denis Reznik Data driven futureDenis Reznik Data driven future
Denis Reznik Data driven future
Аліна Шепшелей
 

More from Аліна Шепшелей (20)

Valerii Iakovenko Drones as the part of the present
Valerii Iakovenko	Drones as the part of the presentValerii Iakovenko	Drones as the part of the present
Valerii Iakovenko Drones as the part of the present
 
Valerii Moisieienko Apache hbase workshop
Valerii Moisieienko	Apache hbase workshopValerii Moisieienko	Apache hbase workshop
Valerii Moisieienko Apache hbase workshop
 
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, man...
 
Anton Ivinskyi Application level metrics and performance tests
Anton Ivinskyi	Application level metrics and performance testsAnton Ivinskyi	Application level metrics and performance tests
Anton Ivinskyi Application level metrics and performance tests
 
Миша Рыбачук Что такое дизайн?
Миша Рыбачук Что такое дизайн?Миша Рыбачук Что такое дизайн?
Миша Рыбачук Что такое дизайн?
 
Макс Семенчук Дизайнер, которому доверяют
 Макс Семенчук Дизайнер, которому доверяют Макс Семенчук Дизайнер, которому доверяют
Макс Семенчук Дизайнер, которому доверяют
 
Anton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designersAnton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designers
 
Andrew Veles Product design is about the process
Andrew Veles Product design is about the processAndrew Veles Product design is about the process
Andrew Veles Product design is about the process
 
Kononenko Alina Designing for Apple Watch and Apple TV
Kononenko Alina Designing for Apple Watch and Apple TVKononenko Alina Designing for Apple Watch and Apple TV
Kononenko Alina Designing for Apple Watch and Apple TV
 
Mihail Patalaha Aso: how to start and how to finish?
Mihail Patalaha Aso: how to start and how to finish?Mihail Patalaha Aso: how to start and how to finish?
Mihail Patalaha Aso: how to start and how to finish?
 
Gregory Shehet Undefined' on prod, or how to test a react app
Gregory Shehet Undefined' on  prod, or how to test a react appGregory Shehet Undefined' on  prod, or how to test a react app
Gregory Shehet Undefined' on prod, or how to test a react app
 
Alexey Osipenko Basics of functional reactive programming
Alexey Osipenko Basics of functional reactive programmingAlexey Osipenko Basics of functional reactive programming
Alexey Osipenko Basics of functional reactive programming
 
Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web
 
Roman Ugolnikov Migrationа and sourcecontrol for your db
Roman Ugolnikov Migrationа and sourcecontrol for your dbRoman Ugolnikov Migrationа and sourcecontrol for your db
Roman Ugolnikov Migrationа and sourcecontrol for your db
 
Dmutro Panin JHipster
Dmutro Panin JHipster Dmutro Panin JHipster
Dmutro Panin JHipster
 
Alex Theedom Java ee revisits design patterns
Alex Theedom	Java ee revisits design patternsAlex Theedom	Java ee revisits design patterns
Alex Theedom Java ee revisits design patterns
 
Volodymyr Getmanskyi How to build a dynamic pricing model using big data
Volodymyr Getmanskyi How to build a dynamic pricing model using big dataVolodymyr Getmanskyi How to build a dynamic pricing model using big data
Volodymyr Getmanskyi How to build a dynamic pricing model using big data
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
Ievgen Vladimirov Only cloud
Ievgen Vladimirov Only cloudIevgen Vladimirov Only cloud
Ievgen Vladimirov Only cloud
 
Denis Reznik Data driven future
Denis Reznik Data driven futureDenis Reznik Data driven future
Denis Reznik Data driven future
 

Recently uploaded

InfoSecurityRussia_2016_Conference__.pdf
InfoSecurityRussia_2016_Conference__.pdfInfoSecurityRussia_2016_Conference__.pdf
InfoSecurityRussia_2016_Conference__.pdf
Yury Chemerkin
 
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
Ирония безопасности
 
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
Хроники кибер-безопасника
 
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdfМорская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
Ирония безопасности
 
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
Ирония безопасности
 
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdfYURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
Yury Chemerkin
 

Recently uploaded (6)

InfoSecurityRussia_2016_Conference__.pdf
InfoSecurityRussia_2016_Conference__.pdfInfoSecurityRussia_2016_Conference__.pdf
InfoSecurityRussia_2016_Conference__.pdf
 
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
Если с вашим кораблем что-то происходит - пора устранять утечки в морской киб...
 
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
Взлом клятвы Гиппократа. Криминалистическая забава с медицинским Интернетом в...
 
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdfМорская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
Морская безопасность. OSINT | Maritime Security. OSINT [RU].pdf
 
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
Добро пожаловать в Кибербиобезопасность - потому что обычная кибербезопасност...
 
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdfYURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
YURY_CHEMERKIN_InfoSecurityRussia_2011.pdf
 

Alexey Tokar To find a needle in a haystack