При определенном количестве контрагентов стандартная СУБД MySQL не всегда должным образом может справляться с нагрузкой, вызываемой поиском контрагентов, что может приводить к увеличению времени обработки запросов. Для повышения скорости и разгрузке основной базы при поиске контагента по ФИО, адресу, году рождения и другим параметрам существует возможность интеграции BGCRM с системой полнотекстового поиска Sphinx.
Из репозиториев необходимо установить дистрибутив Sphinx версии не ниже 2.0.6. В конфигурационном файле, который находится обычно (зависит от дистрибутива) в
описываем конфигурацию:# название индекса 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