BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 окт 2018, 19:07

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Кеширование в Sphinx
СообщениеДобавлено: 12 фев 2018, 18:13 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
Здравствуйте, непонятная ситуация с кешированием через Sphinx. Версия bgcrm-а: v 3.0 build 1227 from 05.02.2018 20:17:33
Настроил в bgcrm-е связку с sphinx-ом, в конфигурации указал подключение и требуемые для кеширования параметры:

sphinx.enable=1
sphinx.url=127.0.0.1
sphinx.port=9306
sphinx.cacheTimeout=300
sphinx.cacheLimit=500
sphinx.customerParamIds=2,3,4,5

У конрагента параметры с такими идентификаторами присутствуют и заполнены:

[408365] Xxxxx Елена Владимировна

Объектов в буфере: 0

ID: 408365 Создан: 10.02.2018 Лог изменений Слияние * X

Параметры Процессы Договоры

ID Название Значение

4 Лицевой счёт 408365
2 ФИО абонента Xxxxx Елена Владимировна
5 Адрес подключения xxx044, XXXXXXX обл, XXXXXx г, Н.Карамзина ул, дом № 36, квартира XX

Поставил в расписание запуск класса ru.bgcrm.worker.SphinxCache поменял конрагенту параметр что вызвало добавление записи в таблицу customer_cache

При срабатывании расписания в логах появляются записи:

02-11/13:20:23 INFO [pool-9-thread-4] SphinxDAO - Customer with ID=408365 dropped from index!
02-11/13:20:23 INFO [pool-9-thread-4] SphinxDAO - Customer with ID=408365 dropped from cache table!
02-11/13:20:23 INFO [pool-9-thread-4] SphinxDAO - 1 customers cached to Sphinx. Max=500

Т.е. вроде как в кеше должно всё обновляться, при этом точно очищается запись с указанным контрагентом в таблице customer_cache, очищается запись в таблице customer Sphinx-а, т.к. со стороны bgcrm-а прилетает команда DELETE FROM customer WHERE id = 408365 и всё.

Теоретически bgcrm должен собрать информацию по контрагенту и свалить её в Sphinx, но попыток со стороны bgcrm-а это сделать нет в принципе. Т.е. из bgcrm-а в кеш ничего не складывается.

Подскажите что может быть не так, может что-то надо в конфигурации добавить что бы bgcrm начал собирать информацию для Sphinx-а.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 08:23 
Не в сети

Зарегистрирован: 01 авг 2014, 03:38
Сообщения: 17
Карма: 0
надо чтоб в общем конфиге было заполнено вот это -

# шаблон описания контрагента для поиска
# в нём можно указать параметры контрагента подстановками вида (param:<code>); например: (${param:73} г.р.)(, ${param:12})
customer.reference.pattern=(${param:10})(${param:19})(${param:18})(${param:25})


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 11:16 
В сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2377
Откуда: Парагвай
Карма: 65
На каком количестве контрагентов требуется кеширование?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 11:21 
Не в сети

Зарегистрирован: 01 авг 2014, 03:38
Сообщения: 17
Карма: 0
делали чтоб по номеру телефона искать и т.п. в bgcrm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 12:20 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
AlexeyBP писал(а):
надо чтоб в общем конфиге было заполнено вот это -

# шаблон описания контрагента для поиска
# в нём можно указать параметры контрагента подстановками вида (param:<code>); например: (${param:73} г.р.)(, ${param:12})
customer.reference.pattern=(${param:10})(${param:19})(${param:18})(${param:25})




Спасибо, это реально помогло. Не совсем очевидно что двух разных местах надо указывать одни и те же параметры, но тем не менее так работает.


Последний раз редактировалось antserv 01 мар 2018, 12:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 12:27 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
zavndw писал(а):
На каком количестве контрагентов требуется кеширование?


Суть не в кешировании, а в мультипоиске по разным параметрам контрагента. Вроде разработчики пообещали в ближайшее время сделать вариант мультипоиска без кеширования в Sphinx-е, с выборкой сразу из MySQL-я и тогда можно будет отказаться от костыля в виде Sphinx-а для мультипоиска, ну а пока только так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 12:52 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
AlexeyBP писал(а):
делали чтоб по номеру телефона искать и т.п. в bgcrm



Подскажите, если не сложно, возможно ли номер телефона при кешировании нормализировать к цифровому виду, убрав все другие знаки и буквы? Вообще в указанной строке можно в скобках проставлять RegExp выражения или нет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 16:10 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5440
Карма: 92
antserv писал(а):
zavndw писал(а):
На каком количестве контрагентов требуется кеширование?

Суть не в кешировании, а в мультипоиске по разным параметрам контрагента. Вроде разработчики пообещали в ближайшее время сделать вариант мультипоиска без кеширования в Sphinx-е, с выборкой сразу из MySQL-я и тогда можно будет отказаться от костыля в виде Sphinx-а для мультипоиска, ну а пока только так.


Сейчас изучаем возможности полнотекстового поиска, которые появились в последних версиях MySQL. Есть встроенный вариант, есть Sphinx плагин, более гибкий и позволяющий вроде как работать с полнотекстовым поиском как обычной таблицей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 16:11 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5440
Карма: 92
antserv писал(а):
AlexeyBP писал(а):
делали чтоб по номеру телефона искать и т.п. в bgcrm

Подскажите, если не сложно, возможно ли номер телефона при кешировании нормализировать к цифровому виду, убрав все другие знаки и буквы? Вообще в указанной строке можно в скобках проставлять RegExp выражения или нет?

Вообще он так и хранится в БД и должен так же в кэш сохраняться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 16:42 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
Администратор писал(а):
antserv писал(а):
AlexeyBP писал(а):
делали чтоб по номеру телефона искать и т.п. в bgcrm

Подскажите, если не сложно, возможно ли номер телефона при кешировании нормализировать к цифровому виду, убрав все другие знаки и буквы? Вообще в указанной строке можно в скобках проставлять RegExp выражения или нет?

Вообще он так и хранится в БД и должен так же в кэш сохраняться.



Спорить не буду, возможно ещё какая-то настройка это регулирует, но в моём случае получилось следующее:

+--------+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | title | reference |
+--------+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 408335 | [408335] Сxxxов Алекxxй Анxxxевич | Сxxxнов Алекxxй Анxxxевич, 408335, 23xx44, Калининградская обл, Калининград г, Н.Карxxxина ул, дом № xx, квартира xx, +7 (95xx) xx-xx-xx [мобильный]; |
+--------+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Обратите внимание на номер телефона, он в специальном формате как хранится в параметрах типа "Телефонный номер", соответственно в Мультипоиске если забить номер телефона иначе чем он хранится в кэше, то результата не будет, если забить так как есть - поиск работает без проблем.

А вот что в параметрах, таблица `param_phone`:

id param_id value
408335 8 +7 (95хх) хх-хх-хх [мобильный];

Параметр заполнен автоматически при вводе через форму.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 19:29 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5440
Карма: 92
antserv писал(а):
соответственно в Мультипоиске если забить номер телефона иначе чем он хранится в кэше, то результата не будет, если забить так как есть - поиск работает без проблем..

Т.е. поиск работает или нет, если номер вводить просто числами без разделителей? На сгенерированную строку не обращайте внимание - это только для отображения, не то, что кладётся в полнотекстовый индекс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 01 мар 2018, 21:27 
Не в сети

Зарегистрирован: 11 фев 2018, 17:44
Сообщения: 8
Карма: 0
Администратор писал(а):
antserv писал(а):
соответственно в Мультипоиске если забить номер телефона иначе чем он хранится в кэше, то результата не будет, если забить так как есть - поиск работает без проблем..

Т.е. поиск работает или нет, если номер вводить просто числами без разделителей? На сгенерированную строку не обращайте внимание - это только для отображения, не то, что кладётся в полнотекстовый индекс.


Вот что кладётся в полнотекстовый поиск: "Сxxxнов Алекxxй Анxxxевич, 408335, 23xx44, Калининградская обл, Калининград г, Н.Карxxxина ул, дом № xx, квартира xx, +7 (95xx) xx-xx-xx [мобильный];". И по словам и по этому тексту идёт поиск. Т.е. если я начинаю искать не xx-xx-xx, а xxxxxx то ничего не находит. Я попробовал разные варианты из номера телефона, можно найти всё по цифре 7, по двум цифрам вместе или по 4-значному коду. Если в строку поиска ввести просто 11-значный номер, то ничего не ищется.

Вот запрос который уходит в сторону Sphinx-а, вполне ожидаемо что он не сработает для указанной выше строки под поиск:

SELECT id,title,reference FROM customer WHERE MATCH('*xxxxxx*') LIMIT 0,25; (это для запроса вида xxxxxx, а не xx-xx-xx)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Кеширование в Sphinx (CRM)
СообщениеДобавлено: 05 мар 2018, 02:28 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5440
Карма: 92
Вероятнее всего вы правы.. Я отпишу вам в HelpDesk, как разберусь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.056s | 42 Queries | GZIP : On ]