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

Презентация:



Advertisements
Похожие презентации
Поисковые движки. Sphinx Search Engine. Докладчик: Роман Кудлай
Advertisements

Эффективный полнотекстовый поиск по базам данных Андрей Аксенов, Петр Зайцев Percona Ltd. shodan (at) shodan.ru.
Распределенные и параллельные вычисления на MS SQL (always on). Адаптация для 1С 8 Сердюк Владимир Баркетов Павел.
Новые возможности.NET Forge CMS Григорий Заводов ведущий разработчик «1С-Битрикс»
Saint Petersburg, 2012 Java Lecture #12 JSP. JSP 2 Java Server Pages (JSP) – технология разработки веб страниц, поддерживающих динамический контент. Позволяет.
ROSES – новое слово в поиске Поисковый комплекс для корпоративного использования с широкими возможностями или Как пользоваться накопленными знаниями без.
Практика разработки корпоративных веб-приложений 2007 презентация.
Разработка системы информационного поиска в базе знаний Белякова Д.Ю. Группа С-105 МИЭМ
COLLADA COLLAborative Design Activity Клишин Алексей, 8409.
Разработка высоконагруженных проектов (например – сайтов для сообществ) Олег Бунин.
gismapserver Шелковников Сергей Иннокентьевич, директор, Компания ШЕЛС gis mapdraw server.
Практика разработки корпоративных веб-приложений 2007 Дмитрий Шейко (
«Либэр. Электронная библиотека» - новый этап в автоматизации Программное решение для создания электронной библиотеки Сорокин И.В., менеджер проекта, ЗАО.
JSF/JSP/Tomcat Введение в технологию. JavaServer Faces JSF - фреймворк для веб-приложений, написанный на Java JSF основывается на использовании компонентов.
Разработка архитектуры больших систем О чем нужно думать перед кодированием? Александр Горный Продюсер Почта.ру
СОЗДАНИЕ ПЛАТФОРМЫ для ИНТЕРНЕТ МАГАЗИНА. Решения План работ Разработка Дизайн Контент Интеграция в социальные сети Стоимость Привлечение Вопросы ОГЛАВЛЕНИЕ.
1 Введение Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования.
FAST for SharePoint 2010 Для разработчиков. Решения для любых задач Весь поиск в интрасети High-end поиск через интерфейс SharePoint Общие компоненты.
КУРС «WEB-ДИЗАЙН». Что такое Web-страница? То, что мы видим в окне браузера, когда заходим на какой-либо сайт! Мы видим веб-страницу сайта – ее содержимое!
Транксрипт:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо Алексей Рагозин