23 июля 2009 г. FreeBSD SphinxSearch Поисковые системы

Инклуд конфигов Sphinx

sphinx

Встала проблема объединения конфигурационных файлов Sphinx'a, погуглив не нашел решения на уровне приложения и решил сделать своё.

Создаем каталог "sphinx", где будем хранить все конфигурационные файлы sphinx'a:

mkdir /usr/local/etc/sphinx

Далее, складываем туда все файлы конфигов с разных хостов, например:

/usr/local/etc/sphinx/adw0rd.ru.conf
/usr/local/etc/sphinx/pyha.ru.conf

и убираем оттуда директивы "indexer" и "searchd".

Теперь, создаем там файлы "indexer.conf" для настройки индексатора и "searchd.conf" для настройки демона сфинкса:

/usr/local/etc/sphinx/indexer.conf
/usr/local/etc/sphinx/searchd.conf

Примерное содержимое файла "indexer.conf":

indexer
{
        mem_limit = 32M
}

Примерное содержимое файла "searchd.conf":

searchd
{
        address = 127.0.0.1
        port = 3312
        log = /var/log/sphinxsearch/searchd.log
        query_log = /var/log/sphinxsearch/sphinx-query.log
        read_timeout = 5
        max_children = 30
        pid_file = /var/run/sphinxsearch/searchd.pid
}

Далее, пишем скрипт, объединяющий наши файлы конфигов:

#!/bin/sh
/bin/cat /usr/local/etc/sphinx/*.conf

и указываем этот файл как конфигурационный файл сфинкса в "/usr/local/etc/rc.d/sphinxsearch":

: ${sphinxsearch_conffile="/usr/local/etc/sphinx.conf.sh"}

Примеры использования

Индексация:

indexer --config /usr/local/etc/sphinx.conf.sh --all
indexer --config /usr/local/etc/sphinx.conf.sh --rotate

Запуск демона

searchd --config /usr/local/etc/sphinx.conf.sh
/usr/local/etc/rc.d/sphinxsearch start

Комментарии

А зачем приучать? Можно сделать алиас:
echo 'alias chown="chown -v"' >> ~/.bashrc

Правда на счёт кавычек не уверен, возможно внутренние нужно экранировать.

ты не туда запостил )
и я юзаю csh

отличный совет!
ещё можно переименовать sphinx.conf.sh в sphinx.conf
а конфигурационные файлы называть например searchd.cnf
тогда не прийдётся писать

searchd --config /usr/local/etc/sphinx.conf.sh

просто #searchd

если у вас запущено много процессов индексации сфинкса я бы делал ллимит на I/O диска

maximum IO calls per second (for I/O throttling)

max_iops = 40 - 60

и поигрался с параметром sql_ranged_throttle в главном идексе

Оставьте свой комментарий

Markdown