webcamp: developer day: sql server full-text search - это не для меня, или...
DESCRIPTION
SQL Server Full-Text Search - это не для меня, или построение своей системы Олег Ракитский Что находится под капотом у поисковых систем? Почему мы решили делать что-то свое, а не просто и быстро заюзать готовые решения? Четкие и нечеткие модели поиска. Как это у нас все работает?..TRANSCRIPT
Полнотекстовый Поиск
Построение поисковой системы методами SQL Server
Почему свой поиск
§ Транзакционность § Скорость нечеткого поиска § Дополнительные типы поиска § Простота поддержки и внесения модификаций
2 |
Основные принципы (1)
§ Поисковый индекс § Сканнер документов § Парсер запросов § Сама поисковая машина
3 |
Основные принципы (2)
4 |
Построение индекса
Прямой индекс Обратный индекс docID termID 1 1 1 2 2 3 . .
doc1 doc2 doc3 term1 1 0 1 term2 1 0 0 term3 0 1 1 term4 0 0 1
ID value 1 term1 2 term2 3 term3
(term1 and term2) = 101 & 100 = 100 = doc1
5 |
Расширение выборки
§ Стемминг § Учет синонимов § Распознавание числительных § Все, что подскажет фантазия J
6 |
Поиск по индексу
§ Обработка запроса § Очистка от мусора § Токенизация § Построение дерева
§ Опрос индекса § Сведение результатов
7 |
Поиск по индексу (2)
§ apple and juice
§ apple juice or orange juice
8 |
Варианты выполнения запросов
§ Классический § Получаем синтаксическое дерево § Каждый лист дерева – запрос к базе § Каждый узел – сведение результатов
§ Единый запрос § Как и в классическом – дерево § Строим единый запрос (JOIN, UNION,
INTERSECT) § Получаем уже готовые результаты
9 |
Нечеткий поиск
§ Отличия от булевого поиска § Основные характеристики
§ Нечеткая логика § Мера похожести слов
10 |
Алгоритмы сравнения
§ Расстояние Хемминга § Расстояние Левенштайна § Расстояние Демерау-Левенштайна § Фонетический поиск § Метод N-грамм
11 |
Расстояния
§ Хемминга § Несовпадения символов по позициям § (Apple)(Juice) = 4
§ Левенштайна
12 |
Расстояние Левенштайна
a p p l e 0 1 2 3 4 5
A 1 0 1 2 3 4 p 2 1 0 1 2 3 l 3 2 1 1 1 2 e 4 3 2 2 2 1
13 |
Пример подсчета расстояния
Демерау-Левенштайна учитывает перестановку символов вдобавок к удалению/вставке
Эффективность Левенштайна
§ Общая оценка временной сложности 𝑂(𝑚𝑛)
§ При расширении выборки 𝑂( (𝑚|𝐿|)↑𝑑 log 𝑛 )
14 |
Фонетический поиск
§ SOUNDEX § Основан на «звучании» слова § Устаревший и сегодня неиспользуемый
§ Metaphone and Double Metaphone § Основаны на согласных § Различия в том, что Double возвращает основной и дополнительный коды строки
§ Google and Googol = KKL, KKL
15 |
Метод N-грамм
§ Наиболее используемый § Основан на теории общих подстрок § Разбиение на подстроки длинной N
§ N = 3 обычно § Apple = app, ppl, ple
§ Слабость при ошибках в коротких словах § apple = app ppl ple § apble = apb pbl ble (0 совпадений)
16 |