В этой статье мы расскажем о том, как обновиться с 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 или форумы .