Sphinx — это поисковая система с открытым исходным кодом, которая позволяет осуществлять полнотекстовый поиск. Наиболее известен тем, что выполняет поиск по большим данным очень эффективно. Индексируемые данные, как правило, могут поступать из самых разных источников: базы данных SQL, текстовые файлы, файлы HTML, почтовые ящики и так далее.
Основные возможности Sphinx
Sphinx помогает включить и повысить ценность поиска и масштабируемости благодаря следующим характеристикам, которые делают Sphinx не заменимым инструментом для поиска данных на сайте.
- Высокая скорость индексации (до 10-15 МБ/сек на каждое процессорное ядро);
- Высокая скорость поиска (до 150—250 запросов в секунду на каждое процессорное ядро с 1 000 000 документов);
- Высокая масштабируемость (крупнейший известный кластер индексирует до 3 000 000 000 документов и поддерживает более 50 миллионов запросов в день);
- Поддержка распределенного поиска;
- Поддержка нескольких полей полнотекстового поиска в документе (до 32 по умолчанию);
- Поддержка нескольких дополнительных атрибутов для каждого документа (то есть группы, временные метки и т. д.);
- Поддержка стоп-слов;
- Поддержка однобайтовых кодировок и UTF-8;
- Поддержка морфологического поиска — имеются встроенные модули для английского, русского и чешского языков; доступны модули для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского, венгерского языков;
- Нативная поддержка PostgreSQL и MySQL;
- Поддержка ODBC совместимых баз данных (MS SQL, Oracle и т. д.).
Как работает Sphinx?
Sphinx в качестве источника данных использует базу данных, на основе этого он создает у себя поисковые индексы которые позволяют осуществлять быстрый поиск данных.
Для работы с Sphinx используется API через которое код сайта получает по поисковому запросу массив идентификаторов найденных записей, которые потом будут сопоставлены в коде с записям в БД сайта.
Какие проблемы решает Sphinx?
Если объем данных в БД сайта достигает несколько сотен тысяч записей или больше, то поиск по ней стандартными средствами БД будет крайней медленный. Поэтому для решения данной проблемы используют Sphinx.
Основная проблема которую решает Sphinx это быстрый поиск в большом объеме данных, а также решает проблему эффективного полнотекстового поиска.
Выводы
Использование Sphinx вместо MySQL может обеспечить значительные преимущества в скорости, Чем просто использование нативных поисковых возможностей баз данных.