Устанавливаем поисковый движок 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 ядрами), поэтому можно хоть каждую минуту запускать переиндексацию. Если у вас реально большие объёмы данных для индексации, то можно задуматься о дельта-индексах (чтобы перестраивать не весь индекс целиком, а учитывать только измененные данные), но это уже совсем другая история.