Поисковые движки. Sphinx Search

Download Report

Transcript Поисковые движки. Sphinx Search

Поисковые движки.
Sphinx Search Engine.
Докладчик: Роман Кудлай
[email protected]
Нам на сайте нужен поиск
Заказчик: нам на сайте нужен поиск!
Заказчик: Быстро и «по-простому»!!!
Разработчик: Будет медленно работать!
Заказчик: Ничего, главное – быстро запустить!
Разработчик: 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