Поисковые движки. Sphinx Search Engine. Докладчик: Роман Кудлай Roman.Kudlay@softline.ru Нам на сайте нужен поиск Заказчик: нам на сайте нужен поиск! Заказчик: Быстро и «по-простому»!!! Разработчик: Будет медленно работать! Заказчик: Ничего, главное – быстро запустить! Разработчик: SELECT * FROM news WHERE text LIKE %query% Заказчик: А почему так медленно? Разработчик: Ну так «по-простому» же!!! 1/20 Что нам дают поисковые движки Скорость поиска Морфология Релевантность Гибкость Снижение нагрузки на основной сервер(а) Поиск во время индексирования Масштабируемость Поиск по файлам 2/20 Что мы теряем Гибкость Простота архитектуры Актуальность Ресурсы 3/20 Популярные поисковые движки Google Search Appliance (GSA) Microsoft FAST Sphinx Search Apache Lucene MySQL full-text search? 4/20 Общая архитектура Индексирование Сайт Поиск Поисковая система 5/20 GSA Программно-аппаратный комплекс Интеграция с системами документооборота Индексирование файлов, БД и сайтов Быстрая интеграция Привычный вывод результатов поиска Высокая скорость От $10 000 в год 6/20 FAST Программный продукт Интеграция с SharePoint Очень много настроек Поддержка каталогов товаров Высокая скорость Только Ms сервера + ферма с многими лицензионными продуктами От $40 000 7/20 Sphinx Высокая скорость Кластеризация Индексирование документов и БД Кастомизация Легкая интеграция с приложениями Open source 8/20 Lucene Легкий поисковик Полноценное поисковое решение для малых проектов Open source Порты на другие языки Lucene4c — C CLucene — C++ MUTIS — Delphi Plucene — Perl Kinosearch — Perl PyLucene (Wrapper — not port) — Python Ferret и RubyLucene — Ruby Zend_Lucene — PHP Montezuma — Lisp Lucene.Net — C# http://ru.wikipedia.org/wiki/Apache_Lucene 9/20 Коротко о Sphinx Search Тип поисковая система Разработчик Андрей Аксенов Написана на C++ Операционная система Кроссплатформенное программное обеспечение Последняя версия 2.0.4-release (Mar 2012) Лицензия GPL 2.0 и проприетарная Сайт sphinxsearch.com http://ru.wikipedia.org 10/20 Про Sphinx немного подробней Высокая скорость индексации (до 10-15 МБ/сек на ядро); Высокая скорость поиска (до 200—300 запросов в секунду на каждое ядро с 1000000 документов); Высокая масштабируемость (крупнейший известный кластер индексирует до 8 000 000 000 документов и поддерживает более 50 миллионов запросов в день); Распределенный поиск; Поддержка нескольких дополнительных атрибутов для каждого документа (то есть группы, временные метки и т. д.); Поддержка стоп-слов; Поддержка индексирования XML документов; SQL-подобный синтаксис через MySQL протокол (с версии 0.9.9) Пакетное и инкрементальное (real-time) полнотекстовое индексирование; Поддержка однобайтовых кодировок и UTF-8; Поддержка морфологического поиска; Родная поддержка MySQL, поддержка ODBC совместимых баз данных (MS SQL, Oracle и т. д.); Поддержка словоформ; Поддержка пользовательских функций http://ru.wikipedia.org 11/20 Общая архитектура (популярный вариант) MySQL прямое подключение XML Pipe MySQL демон Indexer Index PHP searchd Sphinx демон Обычное взаимодействие Поисковые запросы 12/20 Простой вариант архитектуры Sphinx сервера Server Indexer Index searchd 13/20 Кластерный вариант архитектуры Sphinx сервера Master searchd Slave Index Slave searchd Index Slave searchd Index searchd Indexer Indexer 14/20 Кластерный вариант архитектуры Sphinx сервера Node1 Index Node2 Index searchd searchd Node3 Index searchd Indexer Indexer 15/20 Поиск 16/20 Поиск 17/20 Suggester 18/20 Релевантность 19/20 Вопросы 20/20