'

Поиск на своем сайте, обзор open source решений

Понравилась презентация – покажи это...





Слайд 0

Поиск на своем сайте, обзор open source решений Олег Бунин


Слайд 1

Поиск на своём сайте Искать SQLем по своей базе Вы наверное не слышали об альтернативах Использовать поиск от / Отличный вариант для небольших статических сайтов Установить у себя поисковый движок elasticserach сервер


Слайд 2

Ингредиенты поиска


Слайд 3

Поисковый документ Анализ документа: токенизаиця , cтеминг, морфология, cтоп слова Термы id:184647753295609857 author:pledbook tag:grails tag:elasticserach text:look text:use text:plugin text:grails text:website url:grails.org/plugin/... date:2012.03.27


Слайд 4

Поисковый индекс Типичная RDBMS Инвертированный индекс Индекс по отдельному полю или композитному полю Одно значение на поле (full text – много значений) Обычно только один из индексов используется в select`е Btree – эффективные апдейты


Слайд 5

Поисковый индекс Типичный поисковый движок Инвертированный индекс Все поля в одном индексе Произвольное количество значений поля на документ Поиск происходит по всем полям запроса одним махом Интегрированный скоринг Плотный бинарный формат индекса – read only


Слайд 6

Поисковый запрос vs SQL SQL cложный запросы / joins детерминированный запрос возвращает данные Поисковый запрос “плоский” select сложные комбинации атрибутов нечёткие запросы скоринг возвращает метаданные


Слайд 7

Open Source Lucene – библиотека / фреймворк - Java Solr – всё в одном, прицел на “enterprise” elasticsearch – простота IndexTank – crowdsourcing Sphinx – скорость - C++


Слайд 8

Что нужно хотеть от поиска? Фейсетная навигация авто-таксономия кластеризация Автокоррекция Подсказки (автодополнение) Пространственный поиск в т.ч. с фейсетами “more like this” в дополнение к качественным и релевантным результатам


Слайд 9

Фейсеты Динамический набор категорий Число найденых документов по запросу и фильтру Активный фильтры


Слайд 10

Кластеризация Кластеры создаются на основе текста документов


Слайд 11

Автокоррекция n-gram индекс Отдельный индекс для коррекции Нечёткий поиск Работает по основному индексу


Слайд 12

Подсказки Похоже на автокоррекцию. Запрос “дописывается” на основе словаря в индексе и дополняется ключевыми словами на основе статистики.


Слайд 13

Что индексировать? Каталог продуктов Джинсы Levis #559, индиго Джинсы Levis #559, индиго, размер 32x32 Что считать документом?


Слайд 14

Когда индексировать? Поисковые индексы нужно перестраивать Периодическая переиндексация всех документов Динамические атрибуты (пример наличие на складе) Сегментированный индекс Позволяет изменять набор документов без перестройки всего индекса Требует регулярной “оптимизации” индекса


Слайд 15

Индексные сегменты в Lucene Логарифмическое слияние сегментов Самые молодые сегменты можно не спешить писать на диск


Слайд 16

Масштабирование Производительность упирается в CPU сложные запросы могут быть очень CPU-ёмкими решение – несколько реплик индекса read-only файлы облегчают задачу


Слайд 17

Масштабирование Объём индекса Индекс должен помещаться в память Решение – партицирование индекса Каждая партиция выполняет скоринг независимо Результаты нужно агрегировать


Слайд 18

Резюме: Lucene Фреймоворк/библиотека Java API (нет сетевого интерфейса) Фундамент построения поисковой системы


Слайд 19

Резюме: Solr Feature reach поиск из коробки Эффективная поддержка фейсетов Кросс платформенные клиент (HTTP) Интеграция со многими CMS Управление распределённым индексом и репликацией Фокус: “entrprise” приложения Обширная экосистема


Слайд 20

Резюме: Sphix Простой и быстрый Интеграция с MySQL Интеграция со многими CMS Базовый поисковый функционал Нет фейсетов, подсказок и т.п. Распределённый поиск (партицирование)


Слайд 21

Резюме: elasticsearch Управление распределённым индексом Простой HTTP API Иcпользует Lucene Фейсеты Проще в настройке чем Solr Фокус: простота и масштабируемость


Слайд 22

Резюме: Index tank Index tank появился как поисковый SaaS. После покупки компании, код продукта был опубликован как open source. Фокус: социальный контент и crowdsorcing Скоринг по динамическим атрибутам (голоса и т.п.) Управление поисковым “облаком”


Слайд 23

Спасибо Алексей Рагозин alexey.ragozin@gmail.com


×

HTML:





Ссылка: