Your SlideShare is downloading. ×
А. Фирсов "Найти за одну секунду - 2", DUMP-2014
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

А. Фирсов "Найти за одну секунду - 2", DUMP-2014

213
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
213
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Найти за одну секунду - 2 Антон Фирсов Knoema
  • 2. Что такое Нома?  Knoema.com – это веб-сайт, где можно найти открытые данные на любую тему для любой страны мира из кучи разных источников  У нас собран самый большой репозиторий статистических данных в мире и контента, сделанного на их основе 2
  • 3. Несколько метрик  Количество наборов данных – 3500+  Количество временных рядов – 250M+  Размер базы – 130Gb+  И все это растет десятками процентов в месяц 3
  • 4. Проблема Навигация, рубрикатор, теги, темы – это все замечательно, но ведь никто сейчас не пользуется каталогами, а идут сразу на Google и Yandex. Не так ли? Нам нужен поиск! 4
  • 5. Демо 5
  • 6. Демо 6
  • 7. Причины реализации собственного движка  Специфические данные: структурированные, мало текста и много цифр.  Необходимость собственного, сильно специфического алгоритма ранжирования – Алгоритм ранжирования в поиске – это одно из наших ключевых ноу-хау  Специальные возможности  Работа на ограниченных ресурсах железа  Эффективное использование ресурсов 7
  • 8. Хранение данных Mexico – Oranges – Production Quantity Mexico – Oranges – Area Harvested Mexico – Oranges – Yield Mexico – Apples – Production Quantity Mexico – Apples – Area Harvested Mexico – Apples – Yield Portugal – Oranges – Production Quantity … Egypt – Oranges – Production Quantity … 8 Страна С/X культуры Показатель Egypt Apples Yield Mexico Bananas Area harvested Portugal Oranges Production quantity United States of America Olives Potatoes Категория Категория Терм Ряд
  • 9. Демо 9
  • 10. Ключевые требования  СКОРОСТЬ, СКОРОСТЬ, СКОРОСТЬ  Учет различных словоформ  Исправление ошибок, возникающих при наборе  Эффективное использование ресурсов 10
  • 11. Архитектура 11 Сервер приложений База данных Данные Запрос Ответ Поисковый сервер Индекс Снимок состояния Сервер приложений
  • 12. Этапы выполнения поискового запроса  Разбивка на слова  Коррекция ошибок  Учет различных словоформ  Учет синонимов  Ранжирование результатов 12
  • 13. Коррекция ошибок. Расстояние Левенштейна Пример 13 В С С В С С N O M A K N O E M A З З З З Х Л Е Б П И В О Решение «в лоб»: перебрать все слова, имеющиеся в БД, выбрать то, рассояние от которого до слова из запроса минимально. Ассимптотическая сложность: k * n * m k – количество слов в словаре n – средняя длинна слова в словаре m – длинна слова из запроса C С С У С С П Е Р Ь M Ь П Е Р M Ь
  • 14. Коррекция ошибок. Оптимизация 14 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ . : 1.0 ПЕРНЬ
  • 15. Коррекция ошибок. Оптимизация 15 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ П : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • 16. Коррекция ошибок. Оптимизация 16 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕ : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • 17. Коррекция ошибок. Оптимизация 17 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕР : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • 18. Коррекция ошибок. Оптимизация 18 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМ : 0.8 ПЕРНЬ К : 0.8 ПЕРНЬ
  • 19. Коррекция ошибок. Оптимизация 19 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМ : 0.8 ПЕРНЬ КР : 0.6 ПЕРНЬ
  • 20. Коррекция ошибок. Оптимизация 20 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМЬ : 0.8 ПЕРНЬ КР : 0.6 ПЕРНЬ
  • 21. Учет различных словоформ  Использование готового стеммера  Считать все слова с достаточно длинным совпадающим префиксом словоформами одного и того же слова  Словоформы – как частный случай ошибок в написании слов  Аналогично п.3, но меньше снижать релевантность, если основа слова и окончание используются в других словах 21
  • 22. Учет различных словоформ  Пермский край  Пермского края  Пермскому краю  Пермском крае  .....  Алтайский край  Алтайского края  Алтайскому краю  Алтайском крае  .....  Валовой внутренний продукт  Валового внутреннего продукта  Валовому внутреннему продукту  Валовом внутреннем продукте 22 Префикс Кол. Окончание Кол. Вес П 8 ЕРМСКИЙ 1 8 ПЕ 4 РМСКИЙ 1 4 ПЕР 4 МСКИЙ 1 4 ПЕРМ 4 СКИЙ 2 8 ПЕРМС 4 КИЙ 2 8 ПЕРМСК 4 ИЙ 3 12 ПЕРМСКИ 1 Й 5 5
  • 23. Получение результатов 23 Mexico Egypt States United Mexico Egypt United States United States of America USA Слова Термы Harvested Area Oranges Area harvested Oranges Mexico – Oranges – Area harvested USA – Oranges – Area harvested Результаты United States of America United States - GDP
  • 24. Как эффективно использовать память в .net Проблемы:  Минимизировать потребляемую память  Минимизировать время, затрачиваемое на сборку мусора Решение:  Использовать массивы из структур вместо коллекций из классов  Объединять массивы с малым количеством элементов в большие массивы 24
  • 25. Как эффективно использовать память в .net 25 8 байт syncblock 8 байт Тип 8 байт Размер массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт syncblock 8 байт Тип Данные 8 байт syncblock 8 байт Тип элементов 8 байт Размер массива Элемент данных Элемент данных Массив из структур Массив объектов класса
  • 26. Результаты  Реализован относительно быстрый поиск (~1-2 сек.) на слабом оборудовании, потребляющий 13Гб памяти и позволяющий исправлять ошибки в написании слов и учитывать различные словоформы в разных языках.  Архитектура поиска выстроена для дальнейшего горизонтального масштабирования 26
  • 27. Спасибо за внимание! Вопросики? http://knoema.com 27