Установка Manticore Search

Manticore Search — это форк Sphinx, который более популярен, развивается и ничем не уступает. Его установка довольно простая, но делая это из раза в раз мне приходилось сталкиваться с одними и теми же граблями.

По-возможности, лучше использовать Docker, — официальный репозиторий. Это совсем другой подход. Дальнейшее описание в статье посвящено традиционной установке Manticore Search, без докера.

Для установки Manticore Search в Debian/Ubuntu на официальном сайте предлагается просто скачать установочный пакет. Идём по ссылке, выбираем свой дистрибутив, версию, качаем.

Как вариант предлагается:

apt-key adv --fetch-keys 'https://repo.manticoresearch.com/GPG-KEY-manticore'
wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
dpkg -i manticore-repo.noarch.deb
apt update

Но в любом случае установка потом с помощью dpkg -i.

Кофиг по умолчанию /etc/manticoresearch/manticore.conf.

Нет соединения

Manticore Search не может соединиться с MySQL, чтобы проиндексировать базу:

sql_connect: MySQL source wasn't initialized. Wrong name in dlopen?

Полный пример попытки:

root@server:~# indexer --all
Manticore 3.5.4 13f8d08d@201211 release
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2020, Manticore Software LTD (http://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'my_index_adv'...
ERROR: index 'my_index_adv': sql_connect: MySQL source wasn't initialized. Wrong name in dlopen? (DSN=mysql://root:***@localhost:3306/db_my).
total 0 docs, 0 bytes
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

Проблема супер-популярная. На официальном сайте даже есть страница, описывающая все возможные пути решения. Мне обычно помогает установка недостающего пакета. Для Debian/Ubuntu:

apt install default-libmysqlclient-dev

Проблема с паролем

Снова нет соединения, но на этот раз из-за того, что нет плагина caching_sha2_password.so.

sql_connect: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

Полный пример проблемы:

root@server:~# indexer --all
Manticore 3.5.4 13f8d08d@201211 release
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2020, Manticore Software LTD (http://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'my_index_adv'...
ERROR: index 'my_index_adv': sql_connect: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory (DSN=mysql://root:***@localhost:3306/db_my).
total 0 docs, 0 bytes
total 0.011 sec, 0 bytes/sec, 0.00 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

На самом деле причина в MySQL 8, где по умолчанию используется другой способ аутентификации. При этом вы пытаетесь использовать пароль. Чтобы использовать пароль можно изменить настройки. Либо выполнить:

mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'myrootpassword';
exit

Автозапуск

Чтобы настроить и забыть про Manticore Search в крон стоит прописать строчки:

@reboot root /usr/bin/searchd > /dev/null 2>&1
*/25 7-23 * * * root /usr/bin/indexer --rotate --all > /dev/null 2>&1

Первая запускает демон Manticore Search при старте системы. Вторая делает переиндексацию всех баз, в данном случае это происходит один раз в 25 минут с 7 до 23 часов.

Комментарии