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

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

on

  • 257 views

 

Statistics

Views

Total Views
257
Views on SlideShare
257
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Найти за одну секунду - 2 Антон Фирсов Knoema
  • Что такое Нома?  Knoema.com – это веб-сайт, где можно найти открытые данные на любую тему для любой страны мира из кучи разных источников  У нас собран самый большой репозиторий статистических данных в мире и контента, сделанного на их основе 2
  • Несколько метрик  Количество наборов данных – 3500+  Количество временных рядов – 250M+  Размер базы – 130Gb+  И все это растет десятками процентов в месяц 3 View slide
  • Проблема Навигация, рубрикатор, теги, темы – это все замечательно, но ведь никто сейчас не пользуется каталогами, а идут сразу на Google и Yandex. Не так ли? Нам нужен поиск! 4 View slide
  • Демо 5
  • Демо 6
  • Причины реализации собственного движка  Специфические данные: структурированные, мало текста и много цифр.  Необходимость собственного, сильно специфического алгоритма ранжирования – Алгоритм ранжирования в поиске – это одно из наших ключевых ноу-хау  Специальные возможности  Работа на ограниченных ресурсах железа  Эффективное использование ресурсов 7
  • Хранение данных 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
  • Ключевые требования  СКОРОСТЬ, СКОРОСТЬ, СКОРОСТЬ  Учет различных словоформ  Исправление ошибок, возникающих при наборе  Эффективное использование ресурсов 10
  • Архитектура 11 Сервер приложений База данных Данные Запрос Ответ Поисковый сервер Индекс Снимок состояния Сервер приложений
  • Этапы выполнения поискового запроса  Разбивка на слова  Коррекция ошибок  Учет различных словоформ  Учет синонимов  Ранжирование результатов 12
  • Коррекция ошибок. Расстояние Левенштейна Пример 13 В С С В С С N O M A K N O E M A З З З З Х Л Е Б П И В О Решение «в лоб»: перебрать все слова, имеющиеся в БД, выбрать то, рассояние от которого до слова из запроса минимально. Ассимптотическая сложность: k * n * m k – количество слов в словаре n – средняя длинна слова в словаре m – длинна слова из запроса C С С У С С П Е Р Ь M Ь П Е Р M Ь
  • Коррекция ошибок. Оптимизация 14 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ . : 1.0 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 15 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ П : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 16 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕ : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 17 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕР : 1.0 ПЕРНЬ К : 0.8 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 18 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМ : 0.8 ПЕРНЬ К : 0.8 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 19 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМ : 0.8 ПЕРНЬ КР : 0.6 ПЕРНЬ
  • Коррекция ошибок. Оптимизация 20 П Й Я К Р А Й ОГ ИЬ К . ОС М Р Е УМ ПЕРМЬ : 0.8 ПЕРНЬ КР : 0.6 ПЕРНЬ
  • Учет различных словоформ  Использование готового стеммера  Считать все слова с достаточно длинным совпадающим префиксом словоформами одного и того же слова  Словоформы – как частный случай ошибок в написании слов  Аналогично п.3, но меньше снижать релевантность, если основа слова и окончание используются в других словах 21
  • Учет различных словоформ  Пермский край  Пермского края  Пермскому краю  Пермском крае  .....  Алтайский край  Алтайского края  Алтайскому краю  Алтайском крае  .....  Валовой внутренний продукт  Валового внутреннего продукта  Валовому внутреннему продукту  Валовом внутреннем продукте 22 Префикс Кол. Окончание Кол. Вес П 8 ЕРМСКИЙ 1 8 ПЕ 4 РМСКИЙ 1 4 ПЕР 4 МСКИЙ 1 4 ПЕРМ 4 СКИЙ 2 8 ПЕРМС 4 КИЙ 2 8 ПЕРМСК 4 ИЙ 3 12 ПЕРМСКИ 1 Й 5 5
  • Получение результатов 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
  • Как эффективно использовать память в .net Проблемы:  Минимизировать потребляемую память  Минимизировать время, затрачиваемое на сборку мусора Решение:  Использовать массивы из структур вместо коллекций из классов  Объединять массивы с малым количеством элементов в большие массивы 24
  • Как эффективно использовать память в .net 25 8 байт syncblock 8 байт Тип 8 байт Размер массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт Ссылка на элемент массива 8 байт syncblock 8 байт Тип Данные 8 байт syncblock 8 байт Тип элементов 8 байт Размер массива Элемент данных Элемент данных Массив из структур Массив объектов класса
  • Результаты  Реализован относительно быстрый поиск (~1-2 сек.) на слабом оборудовании, потребляющий 13Гб памяти и позволяющий исправлять ошибки в написании слов и учитывать различные словоформы в разных языках.  Архитектура поиска выстроена для дальнейшего горизонтального масштабирования 26
  • Спасибо за внимание! Вопросики? http://knoema.com 27