0
Поиск на своем сайте,обзор open source решений      Алексей Рагозин
Поиск на своём сайте• Искать SQLем по своей базе  o Вы наверное не слышали об альтернативах?• Использовать поиск от       ...
Ингредиенты поиска                                                                             КОНТЕНТ / ДОКУМЕНТЫ        ...
Поисковый документ                           Термы                           id:184647753295609857                        ...
Поисковый индексТипичная RDBMS•   Инвертированный индекс•   Индекс по одному полю или по композитному атрибуту•   Одно зна...
Поисковый индексТипичный поисковый движок•   Инвертированный индекс•   Все атрибуты в одном индексе•   Произвольное количе...
Поисковый запрос vs. SQLSQL                         Поисковый запрос• cложный запросы / joins   • “плоский” select• детерм...
Open SourceLucene – библиотека / фреймворк - Java• Solr – всё в одном, прицел на “enterprise”• elasticsearch – простота• I...
Что нужно хотеть от поиска?            в дополнение к качественным            и релевантным результатам• Фасетная навигаци...
Фасеты      Динамический набор          категорий         Активный фильтрыЧисло найденных документов    по запросу и фильтру
КластеризацияКластеры создаются на основе текста    документов
Автокоррекцияn-gram индекс            Нечёткий поиск• Отдельный индекс для   • Работает по основному  коррекции           ...
ПодсказкиПохоже на автокоррекцию. Запрос “дописывается”на основе словаря по индексу и дополняетсяключевыми словами на осно...
Пространственный поиск• Поддержка geodist – Lucene, Sphinx – зачёт• Индекс по декартовой сетке - Solr
Что индексировать?Файлы? Apache Tika – извлечение метаданных из файлов  определения типа контента  определение языка  опр...
Что индексировать?Индекс плоский, область поиска - не всегдаКаталог продуктов• Джинсы Levis #559, индиго• Джинсы Levis #55...
Когда индексировать?    Поисковые индексы нужно перестраиватьПериодическая переиндексация всех документов• Динамические ат...
Индексные сегменты в Lucene    Логарифмическое слияние сегментов                      #3     #5     #6                    ...
МасштабированиеПроизводительность• Упирается в CPU• Сложные запросы могут быть очень CPU-ёмкимиРешение – несколько реплик ...
МасштабированиеОбъём индекса• Индекс должен помещаться в память• Решение – партицирование индекса  • Каждая партиция выпол...
Резюме: Lucene•   Фреймворк/библиотека•   Java API (нет сетевого интерфейса)•   Фундамент построения поисковой системы•   ...
Резюме: Solr•   Feature reach поиск из коробки•   Эффективная поддержка фасетов•   Кросс платформенные клиент (HTTP)•   Ин...
Резюме: Sphinx•   Простой и быстрый•   Интеграция с MySQL•   Интеграция со многими CMS•   Базовый поисковый функционал    ...
Резюме: elasticsearch•   Управление распределённым индексом•   Управление кластером (дискавери, балансировка)•   Простой H...
Резюме: Index tankIndex tank появился как поисковый SaaS. После покупкикомпании, код продукта был опубликован как open sou...
Поиск на естественном языкеApache UIMA• Термы обогащаются семантическими атрибутами на этапе  индексации• Определение част...
Спасибо           Алексей Рагозин      alexey.ragozin@gmail.com
Upcoming SlideShare
Loading in...5
×

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

1,535

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,535
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Поиск на своем сайте,обзор open source решений Алексей Рагозин
  2. 2. Поиск на своём сайте• Искать SQLем по своей базе o Вы наверное не слышали об альтернативах?• Использовать поиск от / o Отличный вариант для небольших сайтов• Установить у себя поисковый движок elasticserach сервер
  3. 3. Ингредиенты поиска КОНТЕНТ / ДОКУМЕНТЫ поисковыеПОИСКОВЫЙ UI запрос документы парсер парсер Индексный спелчекер анализатор движок ... стемер результат поиска статистика
  4. 4. Поисковый документ Термы 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 токенизаиця , стеминг, морфология, стоп-слова
  5. 5. Поисковый индексТипичная RDBMS• Инвертированный индекс• Индекс по одному полю или по композитному атрибуту• Одно значение на атрибуту (full text – много значений)• Обычно только один из индексов используется в select`е• B-Tree – эффективная вставка/изменение
  6. 6. Поисковый индексТипичный поисковый движок• Инвертированный индекс• Все атрибуты в одном индексе• Произвольное количество значений атрибута на документ• Поиск происходит по всем атрибута запроса одним махом• Интегрированное ранжирование• Плотный бинарный формат индекса – read only
  7. 7. Поисковый запрос vs. SQLSQL Поисковый запрос• cложный запросы / joins • “плоский” select• детерминированный • сложные комбинации запрос атрибутов• возвращает данные • нечёткие запросы • ранжирование • возвращает метаданные
  8. 8. Open SourceLucene – библиотека / фреймворк - Java• Solr – всё в одном, прицел на “enterprise”• elasticsearch – простота• IndexTank – crowd sourcingSphinx – скорость / простота - C++
  9. 9. Что нужно хотеть от поиска? в дополнение к качественным и релевантным результатам• Фасетная навигация • Подсказки (динамическая классификация) (автодополнение)• Кластеризация • Пространственный поиск• Автокоррекция • в т.ч. с фасетами • “more like this”
  10. 10. Фасеты Динамический набор категорий Активный фильтрыЧисло найденных документов по запросу и фильтру
  11. 11. КластеризацияКластеры создаются на основе текста документов
  12. 12. Автокоррекцияn-gram индекс Нечёткий поиск• Отдельный индекс для • Работает по основному коррекции индексу • Levinstein automata - Lucene
  13. 13. ПодсказкиПохоже на автокоррекцию. Запрос “дописывается”на основе словаря по индексу и дополняетсяключевыми словами на основе статистики.
  14. 14. Пространственный поиск• Поддержка geodist – Lucene, Sphinx – зачёт• Индекс по декартовой сетке - Solr
  15. 15. Что индексировать?Файлы? Apache Tika – извлечение метаданных из файлов определения типа контента определение языка определение кодовой страницы Microsoft Office, Open Office, PDF, HTML, Unix mailbox, …Достать тэги из mp3? - не вопрос
  16. 16. Что индексировать?Индекс плоский, область поиска - не всегдаКаталог продуктов• Джинсы Levis #559, индиго• Джинсы Levis #559, индиго, размер 32x32Что считать документом?
  17. 17. Когда индексировать? Поисковые индексы нужно перестраиватьПериодическая переиндексация всех документов• Динамические атрибуты (пример наличие на складе)Сегментированный индекс• Позволяет изменять набор документов без перестройки всего индекса• Требует регулярной “оптимизации” индекса
  18. 18. Индексные сегменты в Lucene Логарифмическое слияние сегментов #3 #5 #6 #7 #5 #2 #2 #4 #6 #6 #1 #1 #1 #1Самые молодые сегменты можно не спешить писать на диск
  19. 19. МасштабированиеПроизводительность• Упирается в CPU• Сложные запросы могут быть очень CPU-ёмкимиРешение – несколько реплик индекса • read-only файлы облегчают задачу
  20. 20. МасштабированиеОбъём индекса• Индекс должен помещаться в память• Решение – партицирование индекса • Каждая партиция выполняет скоринг независимо • Результаты нужно агрегировать
  21. 21. Резюме: Lucene• Фреймворк/библиотека• Java API (нет сетевого интерфейса)• Фундамент построения поисковой системы• Встраиваемый (в т.ч. in-memory индексы)• 3.x – примитивная модель ранжирования
  22. 22. Резюме: Solr• Feature reach поиск из коробки• Эффективная поддержка фасетов• Кросс платформенные клиент (HTTP)• Интеграция со многими CMS• Управление распределённым индексом и репликацией• Фокус - “enterprise” приложения• ОБШИРНАЯ экосистема
  23. 23. Резюме: Sphinx• Простой и быстрый• Интеграция с MySQL• Интеграция со многими CMS• Базовый поисковый функционал • DIY - фасеты, подсказки и т.п.• Распределённый поиск (партицирование)
  24. 24. Резюме: elasticsearch• Управление распределённым индексом• Управление кластером (дискавери, балансировка)• Простой HTTP/JSON API• Нет жесткой схемы• Иcпользует Lucene – поиск, фасеты, “more like this”, …• Фокус – простота и масштабируемость
  25. 25. Резюме: Index tankIndex tank появился как поисковый SaaS. После покупкикомпании, код продукта был опубликован как open source.• Фокус: социальный контент и crowd sourcing• Ранжирование по динамическим атрибутам (голоса, рейтинг и т.п.)• Управление поисковым “облаком”
  26. 26. Поиск на естественном языкеApache UIMA• Термы обогащаются семантическими атрибутами на этапе индексации• Определение частей речи• Machine learning для извлечения семантики• Специальный поисковый парсер• Английский язык
  27. 27. Спасибо Алексей Рагозин alexey.ragozin@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×