Миграция с 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. Код требует более новые версии компиляторов. Для получения дополнительной информации обратитесь к документам по компиляции .

Обновление на 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 пакет или rpm -Uvh пакет и выбрать сохранение существующего 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 или форумы .

Установить Manticore Search

Установить Manticore Search