8.1. Настройка Sphinx

При определенном количестве контрагентов стандартная СУБД MySQL не всегда должным образом может справляться с нагрузкой, вызываемой поиском контрагентов, что может приводить к увеличению времени обработки запросов. Для повышения скорости и разгрузке основной базы при поиске контагента по ФИО, адресу, году рождения и другим параметрам существует возможность интеграции BGCRM с системой полнотекстового поиска Sphinx.

Из репозиториев необходимо установить дистрибутив Sphinx версии не ниже 2.0.6. В конфигурационном файле, который находится обычно (зависит от дистрибутива) в /etc/sphinx/sphinx.conf описываем конфигурацию:

# название индекса
index customer 
{
        # real-time тип индекса
        type            = rt               
        # путь хранения             
        path            = /var/local/sphinx/customer    
        morphology      = stem_ru
        min_word_len    = 1
        charset_type    = utf-8
        enable_star     = 1
        #min_prefix_len = 2
        #min_infix_len  = 2

        # атрибутиы индекса
        # id
        rt_field        = index                         
        # ФИО или название организации
        rt_attr_string  = title                      
        # полная строка описание контрагента с параметрами, по которой осуществляется поиск   
        rt_attr_string  = reference                  
}

searchd
{
        # слушаем порт 9306, тип совместимый с mysql
        listen          = 9306:mysql41
        # логи сервера                  
        log             = /var/log/sphinx/sphinx.log
        # лог запросов    
        query_log       = /var/log/sphinx/query.log     
        binlog_path     = /var/log/sphinx/
        pid_file        = /var/run/sphinx/sphinx.pid
        read_timeout    = 5
        max_children    = 30
        # максимальное количество выводимы совпадений
        max_matches     = 5000                          
        workers         = threads
}

Запуск осуществляется стандартным для *nix систем образом:

# /etc/init.d/searchd start

После запуска можно удостовериться, что демон действительно запущен:

# netstat -nlptu
...

tcp 0 0 0.0.0.0:9306:* LISTEN 27095/searchd

Так как тип выбирали совместимый с MySQL, то мы можем подключиться к серверу Sphinx стандартным клиентом для MySQL:

# mysql -h 127.0.0.1 -P 9306