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 часов.