Все мы долго ждали релиза IPB 3.0 и он естественно появился. Для кого то это был день разочарований, для кого то совсем наоборот. Как не странно, но мне лично новая ветка форума очень понравилась. Ну а сейчас мы поговорим не о том что кому больше понравилось, а то как хоть немного разгрузить наш и без того нагруженный сервер.
Речь пойдет о поиске на форуме, с ветки форума 3.0 научился использовать Sphinx для поиска по содержанию форума. Так давайте попробуем его установить и настроить для наших нужд.
К сожалению данная статья подходит только тем у кого есть доступ к shell своего сервера.
Установка Sphinx
Ну естественно первое что нам потребуется это сам сервер поиска, возьмем его на http://sphinxsearch.com/, так же там можно много чего почерпнуть по тонкой настройке поискового демона.
cd /tmp wget http://sphinxsearch.com/downloads/sphinx-0.9.8.1.tar.gz tar xzvf sphinx-0.9.8.1.tar.gz cd sphinx-0.9.8.1 далее нам нужно сконфигурировать пакет для последующей сборки и установки
./configure make make install Все должно пройти без ошибок, но вполне вероятно нашим исходникам потребуется указать место расположения бинарных файлов MySQL, для этого нам нужно в комманду /configure добавить --with-mysql а дальше путь к файлам должно получится что то вида:
./configure --with-mysql /usr/share/bin После этих шагов наш Sphinx установлен и готов к работе, но для нас работа только началась.
И так продолжим нам потребуется скопировать api/sphinxapi.php в корень директории установленного форума
cp api/sphinxapi.php /путь/до/вашего/форума Дальше создадим рабочие директории Sphinx, где будут хранится файлы индексации и логи
mkdir -p /var/sphinx/log Настройка IPB
Заходим в админку форума, там у нас есть раздел "Настройки и инструменты –> Системные настройки –> Система –> Настройки поиска”, тут кроме первой настройки менять ничего не придется, если конечно у вас Sphinx установлен в той директории на которую указывает форум, в выпадающем меню "Тип поиска” выбираем "Sphinx”
Нам теперь потребуется конфиг для нашего форума, IPS подумали и об этом для этого идем "Приложения -> Управление модулями -> Список модулей”
тут нажимаем кнопочку "Создать конфигурацию Shpinx”, у вас начнется скачка файла sphinx.conf. В данный момент сохраняем где нам удобно и открываем его на редактирование, к сожалению конфиг который для нас любезно создает форум для работы с русским языком не очень подходит, для этого нам нужно найти все места
charset_type = sbcs и заменить значение sbcs на utf-8, должно получится:
charset_type = utf-8 .
После этой процедуры сохраняем наш конфиг в удобном для нас месте.
Предполагается что Ваш сервер MySQL настроен на работу с UTF-8 если нет то желательно добавить
init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' default-character-set=utf8 character-set-server=utf8 collation-server=utf8_unicode_ci с данными настройками MySQL поиск работает 100%
Создание индексов, и запуск поискового демона
Давайте создадим индексы нашего форума, для этого запустим комманду:
/usr/local/bin/indexer --config /путь/где/сохранили/sphinx.conf –-all После того как завершится индексирование форума, запускаем поискового демона:
/usr/local/bin/searchd --config /путь/где/сохранили/sphinx.conf Не забудьте проверить заработал ли поиск на Вашем ресурсе.
Финальная настройка
Для хорошей работы нашего поиска нам потребуется индексировать наш форум, иначе выдача нашего поиска очень быстро станет неактуальной.
Создадим два задания для нашего трудяги cron. Первая задача будет индексировать только новый контент раз в 15 минут, это не сильно нагружает ресурсы. Вторая задача уже будет перестраивать весь индекс форума раз в сутки, для себя я выбрал 4 часа утра, потому что в это время меньше всего востребован форум.
crontab -e */15 * * * * /usr/local/bin/indexer --config /путь/где/сохранили/sphinx.conf core_search_delta members_search_delta forums_search_delta --rotate 0 4 * * * /usr/local/bin/indexer --config /путь/где/сохранили/sphinx.conf --all –rotate не забываем заменить путь на свой. Да в данном индексировании участвует только основной модуль форум, если вы хотите что бы изменения фиксировались в течении дня для других модулей их так же надо добавить в строку индексирования. Для всех модулей должно выглядеть так:
*/15 * * * * /usr/local/bin/indexer --config /путь/где/сохранили/sphinx.conf core_search_delta members_search_delta forums_search_delta calendar_search_delta downloads_search_delta blog_search_delta gallery_search_delta --rotate Для автоматического запуска поискового демона необходимо в один из стартовых скриптов системы, например, /etc/rc.local для ОС Linux вставить код:
# Запускаем демона Сфинкс rm -f /var/sphinx/*.spl /usr/local/bin/searchd --config /путь/где/сохранили/sphinx.conf Залкючение
Sphinx очень хороший поисковик, который поможет снизить вам затраты ресурсов при поиске на своем форуме. Надеюсь данная статья помогла приручить данного зверка у себя на форуме.
|