В данной статье мы расскажем что такое Sphinx, его особенности и примеры использования.

Что такое Sphinx?
Sphinx является некоммерческим проектом с открытым исходным кодом, разрабатываемым более 10 лет, автором которого является Андрей Аксенов.
Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, отличительной особенностью которого является высокая скорость индексации и поиска, а также интеграция с существующими СУБД (MySQL, PostgreSQL) и API для распространённых языков веб-программирования (официально поддерживаются PHP, Python, Java, также существуют реализованные сообществом API для Perl, Ruby, .NET и C++).
Использование Sphinx значительно повышает скорость поиска и снижает затраты ресурсов. Основные возможности Sphinx:
- высокая скорость индексации (до 10-15 МБ/с на каждое процессорное ядро);
- высокая скорость поиска (до 150—250 запросов в секунду на каждое процессорное ядро с 1 000 000 документов);
- высокая масштабируемость (крупнейший известный кластер индексирует до 3 000 000 000 документов и поддерживает более 50 миллионов запросов в день);
- поддержка распределенного поиска;
- поддержка нескольких полей полнотекстового поиска в документе (до 32 по умолчанию);
- поддержка нескольких дополнительных атрибутов для каждого документа (то есть группы, временные метки и т. д.);
- поддержка стоп-слов;
- поддержка однобайтовых кодировок и UTF-8;
- поддержка морфологического поиска — имеются встроенные модули для английского, русского и чешского языков; доступны модули для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского, венгерского языков;
- нативная поддержка MySQL (всех типов таблиц, в том числе MyISAM, InnoDB, NDB);
- нативная поддержка PostgreSQL;
- поддержка ODBC совместимых баз данных (MS SQL, Oracle и т. д.).
Описание установки поисковой системы Sphinx можно найти в официальной документации - sphinxsearch.com.
Использование Sphinx на хостинге
В личном кабинете аккаунта (в разделе Сервисы) Sphinx можно установить в пару кликов мышки.

Перед включением есть возможность подобрать оптимальный тариф, в зависимости от примерного количества индексируемых данных, от 300мб до 5 гигабайт.
Квота устанавливается на оперативную память, доступную для использования сервисом Sphinx.

После включения сервиса появятся два подраздела - "Индексация" и "Поисковый сервер".
Sphinx условно состоит из двух ключевых элементов - построение индексов для данных и поисковая машина по этим индексам.
В разделе "Индексация" как раз настраивается конфигурация Sphinx (вкладка "Редактор конфигурации"), то есть правила описывающие с какими данными и как должен работать Sphinx (примеры конфигураций мы рассмотрим чуть позже).

Стоит отдельно отметить подпункт меню "Управления индексами".
В нем отображаются все добавленные на текущий момент индексы, их статус индексации:

Статус автообновления индексов:

Автообновление индекса по сути является крон заданием, которое запускает переиндексацию.
По умолчанию для всех индексов включено автообновление, с периодичностью в 15 минут.
Можно указать свою периодичность обновления индекса:


При большом количестве индексов, для удобства, можно воспользоваться мультиредактированием:

При необходимости Вы можете подключать собственные словари. Для этого их необходимо разместить в каталогe .service/sphinx/service-account___sphinx_base/static_data/conf/dict
.
Путь указан от корневого каталога учётной записи. В приведённом примере необходимо заменить account на Ваш логин, base — на суффикс имени базы данных (часть имени после символа "_")
После этого через редактор конфигурации к опции "morphology" добавьте значение "lemmatize_ru" или "lemmatize_ru_all". При указании "lemmatize_ru_all" индексироваться будут все нормальные формы слова, если их несколько.
Вкладка "Поисковый сервер" позволяет работать с самой поисковой системой (searchd).
Есть возможность включить или выключить поисковый демон. Выполнить быстрый запрос к индексированным данным с помощью SphinxQL.
Увидеть список последних выполненных заданий по индексации.

Посмотреть логи:

Или же открыть внешний доступ к сервису.

После включения необходимо добавить хотя бы один IP адрес, которому будет разрешено подключение к Sphinx.

При подключении к Sphinx удаленно следует использовать данные которые указаны на странице.
Хост для подключения - sphinx.ваш_логин.beget.hosting
54729 - порт для подключения к Sphinx
55456 - порт для подключения к SphinxQL
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".