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

Post on 26-Jan-2015

219 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Найти за одну секунду - 2

Антон Фирсов

Knoema

Что такое Нома?

Knoema.com – это веб-сайт, где можно найтиоткрытые данные на любую тему длялюбой страны мира из кучи разныхисточников

У нас собран самый большой репозиторийстатистических данных в мире и контента,

сделанного на их основе

2

Несколько метрик

Количество наборов данных – 3500+

Количество временных рядов – 250M+

Размер базы – 130Gb+

И все это растет десятками процентов вмесяц

3

Проблема

Навигация, рубрикатор, теги, темы – это всезамечательно, но ведь никто сейчас непользуется каталогами, а идут сразу на Google

и Yandex. Не так ли?

Нам нужен поиск!

4

Демо

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

top related