Устанавливаем поисковый движок Sphinx на CentOS 6

Sphinx — это чудовищно быстрый поисковый движок, который можно использовать для индексации самых разных данных, но, в первую очередь, он конечно пригождается для сайтов. В штатном репозитории Sphinx отсутствует, поэтому придётся скачать пакет у разработчиков поискового движка (благо они поддерживают ветки для RedHat/CentOS 6 и 7).

Но сначала ставим зависимости:

yum -y install postgresql-libs unixODBC

Затем идём сюда http://sphinxsearch.com/downloads/release/ и смотрим, какая наиболее свежая версия доступна для CentOS 6. На момент написания статьи — это 2.2.11-release. Проходите по ссылке download и далее сможете скопировать прямую ссылку на rpm-пакет по ссылке click here:

В общем, вы ребята взрослые, поэтому прямую ссылку на свежайший пакет, думаю, найти сумеете, поэтому давайте лучше с этой ссылки скорее пакет установим:

rpm -Uvh http://sphinxsearch.com/files/sphinx-2.2.11-2.rhel6.x86_64.rpm

Для хранения бинарного лога Sphinx использует по умолчанию директорию /var/data, можно это изменить в настройках (binlog_path = /var/data), но можно и создать для него директорию:

mkdir /var/data
chown -R sphinx:sphinx /var/data

Теперь всё готово. Запускаем сервис:

service searchd start

Добавляем автозапуск сервиса:

chkconfig searchd on

Строим индекс:

/usr/bin/indexer -c /etc/sphinx/sphinx.conf --rotate --all

Вообще обновление индекса лучше, конечно, добавить в планировщик (crontab -e -u sphinx), сделав запуск, например, раз в 5 минут:

*/5 * * * * /usr/bin/indexer -c /etc/sphinx/sphinx.conf --rotate --all

Для магазина с несколькими тысячами товаров индекс строится за доли секунды (если точнее, то за 0,2-0,3 с на VPS с 4 ядрами), поэтому можно хоть каждую минуту запускать переиндексацию. Если у вас реально большие объёмы данных для индексации, то можно задуматься о дельта-индексах (чтобы перестраивать не весь индекс целиком, а учитывать только измененные данные), но это уже совсем другая история.



Прокомментируйте: