# Migrating from Sphinx

В этой статье мы расскажем, как обновиться с Sphinx.
Manticore Search — это форк Sphinx Search 2.3. Хотя многие части кода были **рефакторированы** и **улучшены**, нет разрушительных изменений, требующих значительных усилий для обновления с Sphinx. В большинстве случаев процедура обновления такая же, как при переходе между минорными версиями Sphinx, и в основном сводится к замене бинарных исполняемых файлов.

#### Индексы


Manticore использует тот же формат индексов, что и Sphinx 2.x, и индексы, созданные в Sphinx, будут загружаться демоном Manticore. Переиндексация требуется только в случае использования индексов до Sphinx 2.2, которые используют атрибуты `str2ordinal`/`str2wordcount`, устаревшие в Sphinx 2.2.

Как общее правило, лучше сначала протестировать, проходит ли обновление без проблем, прежде чем выполнять его на рабочих экземплярах. При тестировании следует проверить, загружаются ли индексы без ошибок и работают ли обычные запросы как ожидается.

В случае распределённых индексов с удалёнными узлами мастер должен быть обновлён первым. Протокол API, используемый между мастером и узлами, получил некоторые обновления, но мастер всё ещё может общаться с узлами, используя более старую версию.
  
  
#### Конфигурация


В Manticore есть параметры, устаревшие по сравнению с Sphinx 2.3.2. Напоминаем, что в версии 2.3.1 были удалены режимы рабочих процессов `prefork` и `fork`. Кроме того, в Sphinx 2.2 такие опции, как `charset_type`, `enable_star` и `max_matches`, были удалены из sphinx.conf (max\_matches остаётся настройкой запроса, но уже не глобальной). Стоит отметить, что режим словаря `crc` по‑прежнему поддерживается в Manticore, поскольку в некоторых случаях он может быть более выгодным, чем режим 'keywords'.
  
  
#### Запросы


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

Если вы используете SphinxAPI, мы не вносили изменений в клиентскую библиотеку после форка, однако, если вы переходите с более старых версий Sphinx, вам следует обновить её до последней версии клиентской библиотеки API.

Плагин SphinxSE для MySQL давно не обновлялся, но в Manticore мы добавили поддержку движка FEDERATED, который является лучшим выбором, поскольку FEDERATED включён во все варианты MySQL (в отличие от SphinxSE, распространяемого только с MariaDB).
  
  
#### Сборка


Manticore перешёл с **autotools** на **cmake**. Код требует более новых версий компиляторов. Для получения дополнительной информации см. документацию [compiling](https://docs.manticoresearch.com/latest/html/installation.html#compiling-manticore-from-source).
  
  
#### Обновление в Windows


Остановите сервис Sphinx.
Замените все старые исполняемые файлы и библиотеки новыми.
Существующий сервис, созданный Sphinx, может запускать Manticore без проблем. Если вы хотите заменить его, просто выполните `searchd.exe --delete` и `searchd.exe --install`.
  
  
#### Обновление из пакетов Linux


Пакеты Manticore используют тот же путь к файлу конфигурации: `/etc/sphinxsearch/sphinx.conf` или `/etc/sphinx/sphinx.conf`, в зависимости от дистрибутива.

Изменилось то, под каким пользователем работает searchd и какие каталоги используются. Sphinx запускался от пользователя `sphinx`/`sphinxsearch` и использовал каталоги `/var/lib/sphinxsearch`, `/var/log/sphinxsearch` и `/var/run/sphinx`.

Manticore работает от пользователя manticore, а каталоги по умолчанию: `/var/lib/manticore`, `/var/log/manticore` и `/var/run/manticore`.

Сначала остановите сервис Sphinx с помощью `service sphinxsearch stop` или `systemctl stop sphinx`, в зависимости от используемого дистрибутива.

Вы можете обновить напрямую, используя `dpkg -i package` или `rpm -Uvh package`, и выбрать сохранение существующего sphinx.conf.

Поскольку сервис Manticore использует `/var/run/manticore` для проверки наличия pid‑файла, единственное изменение, необходимое в `sphinx.conf`, — изменить расположение `pid_file` на `/var/run/manticore/searchd.pid`. Мы рекомендуем менять расположение pid‑файла в sphinx.conf, а не редактировать файл manticore.service, так как будущие обновления могут перезаписать изменения в файле сервиса, и потребуется повторное патч‑инг.

Далее необходимо установить права на существующие каталоги Sphinx для пользователя `manticore`.

На данном этапе вы можете запустить сервис Manticore с помощью `service manticore start` или `systemctl start manticore`.

Если вам нужна помощь с обновлением с Sphinx, не стесняйтесь обращаться в официальный Slack‑канал или на [форумы](http://forum.manticoresearch.com).
