Skip to main content

IPB 3.0 Поиск или как разгрузить сервер

sphinx Все мы долго ждали релиза IPB 3.0 и он естественно появился. Для кого то это был день разочарований, для кого то совсем наоборот. Как не странно, но мне лично новая ветка форума очень понравилась. Ну а сейчас мы поговорим не о том что кому больше понравилось, а то как хоть немного разгрузить наш и без того нагруженный сервер.

Речь пойдет о поиске на форуме, с ветки форума 3.0 научился использовать Sphinx для поиска по содержанию форума. Так давайте попробуем его установить и настроить для наших нужд.

К сожалению данная статья подходит только тем у кого есть доступ к shell своего сервера.

Установка Sphinx

Ну естественно первое что нам потребуется это сам сервер поиска, возьмем его на http://sphinxsearch.com/, так же там можно много чего почерпнуть по тонкой настройке поискового демона.

далее нам нужно сконфигурировать пакет для последующей сборки и установки

Все должно пройти без ошибок, но вполне вероятно нашим исходникам потребуется указать место расположения бинарных файлов MySQL, для этого нам нужно в комманду /configure добавить --with-mysql а дальше путь к файлам должно получится что то вида:

После этих шагов наш Sphinx установлен и готов к работе, но для нас работа только началась.

И так продолжим нам потребуется скопировать api/sphinxapi.php в корень директории установленного форума

Дальше создадим рабочие директории Sphinx, где будут хранится файлы индексации и логи

Настройка IPB

Заходим в админку форума, там у нас есть раздел “Настройки и инструменты –> Системные настройки –> Система –> Настройки поиска”, тут кроме первой настройки менять ничего не придется, если конечно у вас Sphinx установлен в той директории на которую указывает форум, в выпадающем меню “Тип поиска” выбираем “Sphinx”

options_search_sphinx

Нам теперь потребуется конфиг для нашего форума, IPS подумали и об этом для этого идем “Приложения  ->  Управление модулями  ->  Список модулей”

create_cfg_sphinx тут нажимаем кнопочку “Создать конфигурацию Shpinx”, у вас начнется скачка файла sphinx.conf. В данный момент сохраняем где нам удобно и открываем его на редактирование, к сожалению конфиг который для нас любезно создает форум для работы с русским языком не очень подходит, для этого нам нужно найти все места

и заменить значение sbcs на utf-8, должно получится:

.

После этой процедуры сохраняем наш конфиг в удобном для нас месте.

Предполагается что Ваш сервер MySQL настроен на работу с UTF-8 если нет то желательно добавить

с данными настройками MySQL поиск работает 100%

Создание индексов, и запуск поискового демона

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

После того как завершится индексирование форума, запускаем поискового демона:

Не забудьте проверить заработал ли поиск на Вашем ресурсе.

Финальная настройка

Для хорошей работы нашего поиска нам потребуется индексировать наш форум, иначе выдача нашего поиска очень быстро станет неактуальной.

Создадим два задания для нашего трудяги cron. Первая задача будет индексировать только новый контент раз в 15 минут, это не сильно нагружает ресурсы. Вторая задача уже будет перестраивать весь индекс форума раз в сутки, для себя я выбрал 4 часа утра, потому что в это время меньше всего востребован форум.

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

Для автоматического запуска поискового демона необходимо в один из стартовых скриптов системы, например, /etc/rc.local для ОС Linux вставить код:

Залкючение

Sphinx очень хороший поисковик, который поможет снизить вам затраты ресурсов при поиске на своем форуме. Надеюсь данная статья помогла приручить данного зверка у себя на форуме.