При определенном количестве контрагентов стандартная СУБД 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 |