Полнотекстовый поиск 2.0
Вы наверняка в курсе про полнотекстовый поиск, но знаете ли вы, что у него есть несколько версий?
Пару слов о том, для чего он нужен 👇🏼
Предназначен он для быстрого поиска нужной информации в информационной системе.
Никакого волшебства тут нет: чтобы поиск работал быстро, мало того, что сначала нужно создать индекс, его еще нужно поддерживать в актуальном состоянии. Не сталкивались с ситуацией: вот заводит у вас бухгалтер контрагента, а потом не может его найти в списке? Знакомо? Все дело в индексе полнотекстового поиска, ну не успел он еще обновиться, вот и нет вашего контрагента.
А что делает пользователь, если не смог найти? Правильно, создает нового. Так рождаются дубли…
Ну ладно, оставим лирику. Перейдём к делу. Как я сказал в самом начале, у полнотекстового поиска есть несколько версий 👇🏼
Версию №2 завезли в платформу относительно недавно, начиная с 8.3.22. По умолчанию используется версия 1, и чтобы заработала версия 2, нужно переключить в обработке «управление полнотекстовым поиском».
В версии 1 создается основной и дополнительный индекс. В процессе работы новые изменения накапливаются в дополнительном индексе, и потом его необходимо слить в основной индекс. Это осуществляется всем знакомым регламентом заданием в типовых конфигурациях «Слияние индекса ПНД».
В версии 2 создается единый индекс, а изменения в процессе работы с данными накапливаются и затем сливаются в него. Это осуществляется на уровне платформы, т.е никаких регламентах заданий для этого не нужно.
Индекс в версии 2 весит меньше, чем в версии 1. Я проверил это утверждение, и это действительно так. В демо-базе ERP индекс версии 1 весит 285 мб, а версии 2: 185 мб.
К сожалению версия 2 не поддерживается в файловой базе, т.е воспользоваться его возможностями можно только в клиент-серверном варианте работы.
Полнотекстовый поиск помогает искать в динамических списках, но ,к сожалению, часто он может быть не применен (для этого должно сойтись множество условий). Если в динамическом списке много колонок, то субд будет сильно напрягаться, пытаясь выполнить запрос.
Виктор Богачев и Антон Дорошкевич рекомендуют по возможности убирать команду ctrl+f из динамических списков, чтобы оставалась возможность искать только по Alt+F точечно по конкретной колонке.
Какие же звезды должны сойтись, чтобы полнотекстовый поиск работал в динамических списках?
1️⃣ полнотекстовый поиск должен быть включен для всех объектов, которые участвуют в запросе динамического списка и могут использоваться в качестве основной таблицы.
2️⃣ поиск выведется только по видимым колонкам, которые присутствую в тексте запроса динамического списка.
3️⃣ полнотекстовый поиск должен своевременно обслуживаться и быть в актуальном состоянии.
4️⃣ для всех полей выводимых динамическим списком должен быть включен полнотекстовый поиск. Если, например, в форме есть соединение с регистром статусов и для этих реквизитов не включен полнотекстовый поиск, то он априори использоваться не будет.
Сталкивались ли с проблемами при работе полнотекстового поиска? Делитесь в комментариях.