SlideShare a Scribd company logo
1 of 33
Download to read offline
Найти иг[ло]ку в
стоге сена
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 Аліна Шепшелей

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
 

Alexey Tokar To find a needle in a haystack