forum.bitel.ru http://forum.bitel.ru/ |
|
Кеширование в Sphinx (CRM) http://forum.bitel.ru/viewtopic.php?f=51&t=12787 |
Страница 1 из 1 |
Автор: | antserv [ 12 фев 2018, 18:13 ] |
Заголовок сообщения: | Кеширование в Sphinx |
Здравствуйте, непонятная ситуация с кешированием через 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-а. |
Автор: | AlexeyBP [ 01 мар 2018, 08:23 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
надо чтоб в общем конфиге было заполнено вот это - # шаблон описания контрагента для поиска # в нём можно указать параметры контрагента подстановками вида (param:<code>); например: (${param:73} г.р.)(, ${param:12}) customer.reference.pattern=(${param:10})(${param:19})(${param:18})(${param:25}) |
Автор: | zavndw [ 01 мар 2018, 11:16 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
На каком количестве контрагентов требуется кеширование? |
Автор: | AlexeyBP [ 01 мар 2018, 11:21 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
делали чтоб по номеру телефона искать и т.п. в bgcrm |
Автор: | antserv [ 01 мар 2018, 12:20 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
AlexeyBP писал(а): надо чтоб в общем конфиге было заполнено вот это - # шаблон описания контрагента для поиска # в нём можно указать параметры контрагента подстановками вида (param:<code>); например: (${param:73} г.р.)(, ${param:12}) customer.reference.pattern=(${param:10})(${param:19})(${param:18})(${param:25}) Спасибо, это реально помогло. Не совсем очевидно что двух разных местах надо указывать одни и те же параметры, но тем не менее так работает. |
Автор: | antserv [ 01 мар 2018, 12:27 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
zavndw писал(а): На каком количестве контрагентов требуется кеширование? Суть не в кешировании, а в мультипоиске по разным параметрам контрагента. Вроде разработчики пообещали в ближайшее время сделать вариант мультипоиска без кеширования в Sphinx-е, с выборкой сразу из MySQL-я и тогда можно будет отказаться от костыля в виде Sphinx-а для мультипоиска, ну а пока только так. |
Автор: | antserv [ 01 мар 2018, 12:52 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
AlexeyBP писал(а): делали чтоб по номеру телефона искать и т.п. в bgcrm Подскажите, если не сложно, возможно ли номер телефона при кешировании нормализировать к цифровому виду, убрав все другие знаки и буквы? Вообще в указанной строке можно в скобках проставлять RegExp выражения или нет? |
Автор: | Администратор [ 01 мар 2018, 16:10 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
antserv писал(а): zavndw писал(а): На каком количестве контрагентов требуется кеширование? Суть не в кешировании, а в мультипоиске по разным параметрам контрагента. Вроде разработчики пообещали в ближайшее время сделать вариант мультипоиска без кеширования в Sphinx-е, с выборкой сразу из MySQL-я и тогда можно будет отказаться от костыля в виде Sphinx-а для мультипоиска, ну а пока только так. Сейчас изучаем возможности полнотекстового поиска, которые появились в последних версиях MySQL. Есть встроенный вариант, есть Sphinx плагин, более гибкий и позволяющий вроде как работать с полнотекстовым поиском как обычной таблицей. |
Автор: | Администратор [ 01 мар 2018, 16:11 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
antserv писал(а): AlexeyBP писал(а): делали чтоб по номеру телефона искать и т.п. в bgcrm Подскажите, если не сложно, возможно ли номер телефона при кешировании нормализировать к цифровому виду, убрав все другие знаки и буквы? Вообще в указанной строке можно в скобках проставлять RegExp выражения или нет? Вообще он так и хранится в БД и должен так же в кэш сохраняться. |
Автор: | antserv [ 01 мар 2018, 16:42 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
Администратор писал(а): 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хх) хх-хх-хх [мобильный]; Параметр заполнен автоматически при вводе через форму. |
Автор: | Администратор [ 01 мар 2018, 19:29 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
antserv писал(а): соответственно в Мультипоиске если забить номер телефона иначе чем он хранится в кэше, то результата не будет, если забить так как есть - поиск работает без проблем.. Т.е. поиск работает или нет, если номер вводить просто числами без разделителей? На сгенерированную строку не обращайте внимание - это только для отображения, не то, что кладётся в полнотекстовый индекс. |
Автор: | antserv [ 01 мар 2018, 21:27 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
Администратор писал(а): 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) |
Автор: | Администратор [ 05 мар 2018, 02:28 ] |
Заголовок сообщения: | Re: Кеширование в Sphinx (CRM) |
Вероятнее всего вы правы.. Я отпишу вам в HelpDesk, как разберусь. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |